https://github.com/aziascreations/fs2020---simconnect-purebasic-bindings
PureBasic bindings to the SimConnect API from FS2020's SDK
https://github.com/aziascreations/fs2020---simconnect-purebasic-bindings
bindings simconnect
Last synced: 3 months ago
JSON representation
PureBasic bindings to the SimConnect API from FS2020's SDK
- Host: GitHub
- URL: https://github.com/aziascreations/fs2020---simconnect-purebasic-bindings
- Owner: aziascreations
- License: unlicense
- Created: 2020-08-21T06:08:00.000Z (almost 6 years ago)
- Default Branch: master
- Last Pushed: 2020-08-27T15:57:26.000Z (almost 6 years ago)
- Last Synced: 2025-02-21T11:20:33.667Z (over 1 year ago)
- Topics: bindings, simconnect
- Language: PureBasic
- Homepage:
- Size: 23.4 KB
- Stars: 3
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: readme.md
- License: LICENSE
Awesome Lists containing this project
README
# FS2020 - SimConnect PureBasic Bindings
A simple includes that provides bindings to a couple of the functions and structures present in the SimConnect API.
Only a very small amount of structures and functions are properly defined and tested, use this include at your own risk.
## Cloning
To clone this repo and the submodule it requires you have to use one of the following commands:
`git clone --recurse-submodules https://github.com/aziascreations/FS2020---SimConnect-PureBasic-Bindings.git`
If you want to clone the whole repo without integrating it into an existing repository.
`aaa`
If you want to clone it as a submodule inside an existing repository.
## Usage
### Importing
To include the pbi file in your code you just have to use `XIncludeFile "${Include Path}"` where `${Include Path}` can either be the absolute or relative path to said include.
Next, if you selected a custom location for the Flight Simulator SDK when you installed it, you can either manually modify the path in the pbi file or define a constant named `#SIMCONNECT_LIB_PATH` which contains the path to the `SimConnect.lib` file before including the pbi file.
See "[Examples/CustomLibPath.pb]()" for an example on how to do this.
You should also keep in mind that the include uses the `EnableExplicit` compiler directive.
[Remark about wintypes, the license, why it is there and how to resolve the macros if needed !!!]
### Important remarks
There are a couple of important remarks that need [to be made] regarding the way you need to call functions or how some structure works.
#### Functions
Some of the functions that require strings like `SimConnect_Open()` and `SimConnect_FlightPlanLoad()` won't work properly in PureBasic [due to...].
To fix this issue, you need to need to work around PureBasic's unicode formatted strings like so:
For a function in C++
`SIMCONNECTAPI SimConnect_FlightPlanLoad(HANDLE hSimConnect, const char * szFileName);`
Whose PB equivalent would be:
`SimConnect_FlightPlanLoad(hSimConnect.HANDLE, szFileName.s)`
You have to actually treat the string a pointers like so:
`SimConnect_FlightPlanLoad(hSimConnect.HANDLE, *szFileName)`
And call it like in this way:
```
Define *FileName = Ascii("MyFlightPlan")
SimConnect_FlightPlanLoad(hSimConnect, *FileName)
FreeMemory(*FileName)
```
A potential fix for this issue could be to see if the `.p-ascii` data type to force the compiler to do it for ourselve, but this is not guaranteed to work, this is something I will be looking into however.
#### Structures
[....]
## Building
### Dynamically linked apps
Just place the dll file present in the SDK in the same folder as your final or temporary executable.
And don't forget to check the "*Create temporary executable in the source directory*" option in the "*Compiler options*" menu.
### Statically linked apps
You might be able to do it with the larger .lib file that is included in the SDK, but I couldn't get it to work.
The linker kept throwing symbol errors.
## License
Code in this repo:
[Unlicense](LICENSE)
SimConnect:
I don't know, you will have to check.