> For the complete documentation index, see [llms.txt](https://docs.licensespring.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.licensespring.com/frequently-asked-questions/sdk/c++.md).

# C++

<details>

<summary>VM Detection on the Windows platform when linking with the static libraries</summary>

VM detection is possible on Windows OS. Linking to the LicenseSpring library can be done statically or dynamically. The LicenseSpring library loads `LicenseSpringVMD.dll` at run time when detecting for VM. `LicenseSpringVMD.dll` cannot be used independently — only within the LicenseSpring SDK.

</details>

<details>

<summary>When using C++, there is a large number of files. Is it possible somehow to decrease the number of files to a small number?</summary>

To reduce the number of dynamic libraries your application requires, you can statically link the libraries into your executable, incorporating their code directly into the application at compile time. This results in a standalone executable that does not depend on external library files at runtime.

</details>

<details>

<summary>What SSL certificates does the SDK use?</summary>

Check out the [**Extended options document**](https://docs.licensespring.com/sdks/tutorials/advanced-usage/extended-configuration#A4BVU) for more information about setting up native TLS for curl.

The C++ SDK uses multiple fallbacks to look up valid SSL certificates for reaching the License API. Certificates are checked in the following order:

* system certificates
* SDK embedded certificates
* certificates from a bundle file

**Embedded certificates**

The SDK contains a list of root certificates that are included in Mozilla products. See <https://wiki.mozilla.org/CA/Included_Certificates>.

**Certificate bundle file**

The SDK also contains a standalone file containing the same certificates that you can bundle with your binary.

On **Windows**, the SDK searches for `curl-ca-bundle.crt` and `ca-certificates.crt` files:

* using `SearchPath`, see <https://learn.microsoft.com/en-us/windows/win32/api/processenv/nf-processenv-searchpatha>
* in the `certificates` folder placed in the executable directory

On **Linux and macOS**, the SDK searches for the `ca-certificates.crt` file:

* in the executable directory
* in the `certificates` directory placed in the executable directory
* in the current working directory
* in the `certificates` directory placed in the current working directory

If that fails, the SDK also tries to find a certificate file commonly found on different Linux and BSD distributions:

* `/etc/ssl/certs/ca-certificates.crt`
* `/etc/pki/tls/certs/ca-bundle.txt`
* `/etc/pki/tls/cacert.pem`
* `etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem`
* `/etc/ssl/cert.pem`
* `/usr/local/etc/ssl/cert.pem`
* `/usr/local/share/certs/ca-root-nss.crt`
* `/etc/openssl/certs/ca-certificates.crt`
* `/usr/local/etc/openssl/cert.pem`

</details>

<details>

<summary>How to identify which certificate was used to authenticate the License API?</summary>

This is currently not possible. Enabling logging will write:

Failed to verify SSL certificate using system/embedded/ca file certs.

to the log file. If the request fails, an appropriate exception will be thrown.

</details>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.licensespring.com/frequently-asked-questions/sdk/c++.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
