c++ - 协助将基本 SDK 纳入 C++ 程序 Dev C++
问题描述
我一直在制作一些我想链接到 discord 的应用程序,特别是使用 Discord 的 SDK。SDK 带有 64 位和 32 位 x84 lib 文件,以及一个 C++ 文件夹,其中包含它需要的所有内容,因此我假设支持 C++。
但是,我在链接库或其他任何东西方面非常糟糕,并且在链接时总是遇到问题。我使用 Dev C++ 作为我的 IDE,我的代码如下:
#include <iostream>
#include "Discord/discord.h"
using namespace std;
void InitDiscord()
{
auto discid = 772671910668133376; //Not my actuall discord app ID, but real one does not make a difference
discord::Core* core{};
discord::Core::Create(discid, DiscordCreateFlags_Default, &core);
}
int main(){
InitDiscord();
cout << "Discord active";
while(1){
}
return 0;
}
我得到了错误:
C:\TDM-GCC-64\x86_64-w64-mingw32\bin\ld.exe Discord Testing.o:Discord Testing.cpp:(.text+0x32): undefined reference to `discord::Core::Create(long long, unsigned long long, discord::Core**)'
仅适用于线路discord::Core::Create(discid, DiscordCreateFlags_Default, &core);
而不适用discord::Core* core{};
我正在使用 C++17 和更新的 TDM-GCC 编译器,它适用于我的所有其他应用程序。我在程序目录中包含 .lib 文件和 .dll 文件,而在链接器中,我唯一使用的是-discord_game_sdk.dll.lib
有效目录。我也尝试过discord_game_sdk.dll.lib
将库放在与 include: 相同的目录中Discord/discord_game_sdk.dll.lib
。我已经尝试在所有项目和编译器目录中同时使用 32 位和 64 位库而没有任何更改,我确信这可能非常简单,但我在任何地方都找不到任何示例 C++ 不和谐程序或如何包含他们的 SDK。
如果有人能找出问题所在以及我如何解决它,那将非常有帮助和感激。
编辑:看来 user4581301 是对的,TDM-GCC 和其他 Mingw 编译器不支持.lib
文件,并且尽管被链接,但会忽略它们。SDK 没有提供除 .dylib、..so
和.bundle
. 这产生了一个新问题,我已经设置了编译器并且无法真正切换到 Visual Studio,所以我需要一种方法以.lib
某种方式转换.a
。这里的帖子推荐http://code.google.com/p/lib2a/,它需要一个.def
文件,另一个 SDK 没有附带的文件,但显然gendef.exe
我的编译器附带的一个名为的程序可以.def
从文件创建.dll
文件。确实是这样,但是当我尝试它时,我得到了错误:
C:\Program Files (x86)\Dev-Cpp\MinGW64\x86_64-w64-mingw32\bin>gendef.exe discord_game_sdk.dll
* [discord_game_sdk.dll] Found PE image
* failed to create discord_game_sdk.def ...
没有其他警告。现在我需要知道我是否转换错误,是否有更简单的解决方法,或者是否可以转换或使用其他文件类型之一。在这一点上的任何建议都受到欢迎和赞赏!
解决方案
推荐阅读
- mysql - 查询返回 BIT 数据类型的嵌套对象。如何获取位值?
- c# - UWP DataGrid 列绑定为 nullable double,但修改单元格不会修改属性
- c# - c#获取用户输入,在excel中搜索该输入,如果找到则将行复制到新电子表格
- oracle - Oracle 中 @@Error 的等价物是什么
- mysql - sql - 使用动态选择的表名进行分组
- java - JPA双向映射未获取深度映射数据
- mysql - MySQL 视图将 INT 列的 SUM 转换为十进制类型
- java - 如何在 Smartgwt 中以编程方式扩展 ColumnTree 的节点?
- python - numpy linspace 意外的步长值
- python - 我在 Pythin 3.4.4 中的代码可以工作,但现在它的 Idex 超出范围