> For the complete documentation index, see [llms.txt](https://qpapel.papelship.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://qpapel.papelship.com/documentation/tr-documentation/proje-ayarlama/kurulum.md).

# Kurulum

qPapel Auth kütüphanesini Visual Studio C++ projenize entegre etmek için eksiksiz kılavuz.

{% hint style="info" %}
Bu kütüphane Windows 10/11 (x64) ve Visual Studio 2019 veya daha yeni bir sürüm gerektirir.
{% endhint %}

## Gereksinimler

| Gereksinim              | Sürüm                                       |
| ----------------------- | ------------------------------------------- |
| İşletim Sistemi         | Windows 10/11 (x64)                         |
| Geliştirme Ortamı (IDE) | Visual Studio 2019 veya daha yeni bir sürüm |
| C++ Standardı           | C++17 veya daha yeni bir sürüm              |
| İnternet Bağlantısı     | Aktif bağlantı gereklidir                   |

## Kütüphane ve Araç Dosyalarını İndirme

Şu bileşenleri temin etmeniz gerekecektir:

* **Statik SDK Dosyaları**: Uygulamanıza bağlamak için `qPapelLib.h`, `qPapelLib.lib` ve `libsodium.lib` dosyalarını alacaksınız.
* **Kimlik Doğrulama DLL'i**: Web Panelinizin indirmeler sayfasından **qPapelAuth64.dll** dosyasını indirin: [papelship.com/dashboard/downloads](https://papelship.com/dashboard/downloads).
* **Packer Aracı**: Kimlik doğrulama DLL'inizi enjekte etmek için araçlar klasöründeki **qPapelPacker.exe** dosyasını alacaksınız.

{% tabs %}
{% tab title="Başlık Dosyası" %}
**qPapelLib.h**

* Ana kütüphane başlık dosyası
* Tüm fonksiyon bildirimlerini ve ergonomik C++ namespace sarmalayıcısını içerir
* Bunu Include dizininize yerleştirin
  {% endtab %}

{% tab title="Kütüphane Dosyaları" %}
**qPapelLib.lib**

* Derlenmiş statik kütüphane (projenize bağlanır)
* Bunu Lib dizininize yerleştirin

**libsodium.lib**

* Derlenmiş statik kütüphane (libsodium bağımlılığı)
* Bunu Lib dizininize yerleştirin
  {% endtab %}

{% tab title="Araçlar" %}
**qPapelTools/**

* **qPapelPacker.exe**: Güvenlendirilmiş bölüm enjektör aracı.
* **qPapelAuth64.dll**: Panelden indirilip buraya yerleştirilen DLL.
* Bu klasörü tamamen projenizin kök dizinine yerleştirin.
  {% endtab %}
  {% endtabs %}

## Proje Kurulumu

{% stepper %}
{% step %}

### Proje Yapısını Oluşturma

Projenizde aşağıdaki klasör yapısını oluşturun:

```
Projeniz/
├── Include/
│   └── qPapelLib.h
├── Lib/
│   ├── qPapelLib.lib
│   └── libsodium.lib
├── qPapelTools/
│   ├── qPapelPacker.exe
│   └── qPapelAuth64.dll  <-- papelship.com/dashboard/downloads adresinden indirilir
└── Source/
    └── main.cpp
```

{% endstep %}

{% step %}

### Include Dizinini Yapılandırma

{% tabs %}
{% tab title="Visual Studio GUI" %}

1. **Solution Explorer** penceresinde projenize sağ tıklayın.
2. **Properties** (Özellikler) seçeneğini seçin.
3. **Configuration Properties → C/C++ → General** yolunu izleyin.
4. **Additional Include Directories** seçeneğine tıklayın.
5. Include klasörünüzün yolunu ekleyin:

   ```
   $(ProjectDir)Include
   ```

   Veya mutlak yol olarak:

   ```
   C:\Projem\Include
   ```
6. **OK** (Tamam) seçeneğine tıklayın.
   {% endtab %}

{% tab title="Proje Dosyası (.vcxproj)" %}
Aşağıdaki satırları `.vcxproj` dosyanıza ekleyin:

```xml
<ItemDefinitionGroup>
  <ClCompile>
    <AdditionalIncludeDirectories>$(ProjectDir)Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
  </ClCompile>
</ItemDefinitionGroup>
```

{% endtab %}
{% endtabs %}
{% endstep %}

{% step %}

### Kütüphane (Library) Dizinini Yapılandırma

{% tabs %}
{% tab title="Visual Studio GUI" %}

1. Proje özelliklerinde (**Properties**), **Configuration Properties → Linker → General** yolunu izleyin.
2. **Additional Library Directories** seçeneğine tıklayın.
3. Lib klasörünüzün yolunu ekleyin:

   ```
   $(ProjectDir)Lib
   ```

   Veya mutlak yol olarak:

   ```
   C:\Projem\Lib
   ```
4. **OK** (Tamam) seçeneğine tıklayın.
   {% endtab %}

{% tab title="Proje Dosyası (.vcxproj)" %}
Aşağıdaki satırları `.vcxproj` dosyanıza ekleyin:

```xml
<ItemDefinitionGroup>
  <Link>
    <AdditionalLibraryDirectories>$(ProjectDir)Lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
  </Link>
</ItemDefinitionGroup>
```

{% endtab %}
{% endtabs %}
{% endstep %}

{% step %}

### Kütüphaneyi Bağlama (Linker)

{% tabs %}
{% tab title="Visual Studio GUI" %}

1. Proje özelliklerinde (**Properties**), **Configuration Properties → Linker → Input** yolunu izleyin.
2. **Additional Dependencies** seçeneğine tıklayın.
3. Aşağıdaki kütüphaneleri ekleyin:

   ```
   qPapelLib.lib
   libsodium.lib
   ```
4. **OK** (Tamam) seçeneğine tıklayın.
   {% endtab %}

{% tab title="Proje Dosyası (.vcxproj)" %}
Aşağıdaki satırları `.vcxproj` dosyanıza ekleyin:

```xml
<ItemDefinitionGroup>
  <Link>
    <AdditionalDependencies>qPapelLib.lib;libsodium.lib;%(AdditionalDependencies)</AdditionalDependencies>
  </Link>
</ItemDefinitionGroup>
```

{% endtab %}

{% tab title="Kod (Pragma)" %}
Kaynak kodunuza (source file) ekleyin:

```cpp
#pragma comment(lib, "qPapelLib.lib")
#pragma comment(lib, "libsodium.lib")
```

{% endtab %}
{% endtabs %}
{% endstep %}

{% step %}

### C++ Standardını Belirleme

{% hint style="warning" %}
Bu kütüphane C++17 veya daha yeni bir sürüm gerektirir.
{% endhint %}

1. Proje özelliklerinde (**Properties**), **Configuration Properties → C/C++ → Language** yolunu izleyin.
2. **C++ Language Standard** seçeneğini **ISO C++17 Standard (/std:c++17)** veya daha yeni bir standarda ayarlayın.
3. **OK** (Tamam) seçeneğine tıklayın.
   {% endstep %}

{% step %}

### Post-Build Event (Packer Otomasyonu) Yapılandırma

{% hint style="info" %}
Derlenen çalıştırılabilir dosyanızın, `qPapelAuth64.dll` dosyasını güvenli bir `.qpdata` bölümü olarak içine yerleştirmesi için `qPapelPacker.exe` ile işlenmesi şarttır; aksi takdirde `qpapel::Init()` başarısız olacaktır.
{% endhint %}

1. Proje özelliklerinde (**Properties**), **Configuration Properties → Build Events → Post-Build Event** yolunu izleyin.
2. **Command Line** alanını şu şekilde ayarlayın:

   ```cmd
   if not exist "$(ProjectDir)dist" mkdir "$(ProjectDir)dist"
   "$(ProjectDir)qPapelTools\qPapelPacker.exe" --dll "$(ProjectDir)qPapelTools\qPapelAuth64.dll" --input "$(OutDir)$(TargetName)$(TargetExt)" --output "$(ProjectDir)dist\$(TargetName)_final_x64.exe"
   ```
3. **Description** (veya Message) alanını şu şekilde ayarlayın:

   ```
   Embedding qPapelAuth DLL into target executable...
   ```
4. **OK** (Tamam) seçeneğine tıklayın.
   {% endstep %}
   {% endstepper %}

## Kurulumu Doğrulama

Kurulumu doğrulamak için bir test dosyası oluşturun:

```cpp
#include <iostream>
#include "qPapelLib.h"

int main() {
    if (!qpapel::Init()) {
        std::cout << "Core stub initialization failed." << std::endl;
        return 1;
    }
    std::cout << "qPapel Auth library loaded successfully!" << std::endl;
    return 0;
}
```

{% tabs %}
{% tab title="Derleme" %}
**F7** tuşuna basın veya **Build → Build Solution** seçeneğine tıklayın.

Beklenen çıktı:

```
Build succeeded.
```

{% endtab %}

{% tab title="Çalıştırma" %}
**Ctrl+F5** tuşlarına basın veya **Debug → Start Without Debugging** seçeneğine tıklayın.

Beklenen çıktı:

```
qPapel Auth library loaded successfully!
```

{% endtab %}
{% endtabs %}

{% hint style="success" %}
Eğer başarı mesajını görüyorsanız, kurulum tamamlanmıştır!
{% endhint %}

## Sorun Giderme

<details>

<summary>Hata: Cannot open include file 'qPapelLib.h'</summary>

**Neden:** Include dizini doğru yapılandırılmamış.

**Çözümler:**

1. `qPapelLib.h` dosyasının Include klasöründe bulunduğunu doğrulayın.
2. Proje özelliklerinde Include yolunu kontrol edin.
3. Göreli (relative) yol çalışmazsa mutlak (absolute) yol kullanın.
4. Dosya yolunda yazım hatası olmadığından emin olun.

**Doğrulama:**

```cpp
// Sorunu giderdikten sonra bu kod çalışmalıdır
#include "qPapelLib.h"
```

</details>

<details>

<summary>Hata: Unresolved external symbol</summary>

**Neden:** Kütüphane projeye düzgün şekilde bağlanmamış.

**Çözümler:**

1. `qPapelLib.lib` ve `libsodium.lib` dosyalarının Lib klasöründe bulunduğunu doğrulayın.
2. Proje özelliklerinde Lib yolunu kontrol edin.
3. Kütüphanelerin Additional Dependencies (Ek Bağımlılıklar) alanına eklendiğinden emin olun.
4. Hedef platformun x86 değil **x64** olduğunu kontrol edin.

**Linker ayarlarında doğrulayın:**

* Additional Library Directories: Lib yolunu içermelidir.
* Additional Dependencies: `qPapelLib.lib` ve `libsodium.lib` dosyalarını içermelidir.

</details>

<details>

<summary>Hata: LNK1104 cannot open file</summary>

**Neden:** Kütüphane dosyası belirtilen yolda bulunamadı.

**Çözümler:**

1. Kütüphane dosyasının belirtilen yolda mevcut olup olmadığını kontrol edin.
2. Dosya adının tam olarak `qPapelLib.lib` olduğunu doğrulayın.
3. Dosya yolunda gereksiz boşluklar olup olmadığını kontrol edin.
4. Mutlak yol kullanmayı deneyin.

</details>

<details>

<summary>Hata: C++ standard not supported</summary>

**Neden:** Projede ayarlanan C++ standardı C++17'nin altında.

**Çözümler:**

1. Proje özelliklerini açın.
2. C/C++ → Language sekmesine gidin.
3. C++ Language Standard standardını `/std:c++17` veya daha yeni bir standarda ayarlayın.
4. Projeyi yeniden derleyin.

</details>

<details>

<summary>Platform Uyuşmazlığı (x86 vs x64)</summary>

**Neden:** Projenizin hedef platformu kütüphaneninkiyle uyuşmuyor.

**Çözümler:**

1. Bu kütüphane **x64** için derlenmiştir.
2. Proje hedef platformunuzu **x64** yapın:
   * Build → Configuration Manager yolunu izleyin.
   * Active solution platform seçeneğini x64 yapın.
3. Projeyi yeniden derleyin.

</details>

## Release Derlemesi için Yapılandırma

{% hint style="info" %}
Aynı kurulum adımları hem Debug hem de Release konfigürasyonları için geçerlidir.
{% endhint %}

Release için yapılandırma:

1. **Release** konfigürasyonuna geçin.
2. Yukarıdaki 2 ila 4. adımları tekrarlayın.
3. Veya Özellikler penceresinde **All Configurations** (Tüm Konfigürasyonlar) seçeneğini seçerek ayarı her iki konfigürasyona birden uygulayın.

## Sonraki Adımlar

{% hint style="success" %}
Kurulum tamamlandı! Şimdi API anahtarlarınızı yapılandırın.
{% endhint %}

* Configuration - API anahtarlarınızı panelden edinin
* Quick Start - Kütüphaneyi kullanmaya başlayın
* Complete Example - Tam uygulama örneğini inceleyin
