问题描述
我一直在制作一些我想链接到 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,&core);
而不是 discord::Core* core{};
我正在使用 C++17 和更新的 TDM-GCC 编译器,该编译器适用于我的所有其他应用程序。我将 .lib 文件和 .dll 文件包含在程序目录中,而在链接器中,我唯一使用的是 -discord_game_sdk.dll.lib
,它是一个有效目录。我也尝试过 discord_game_sdk.dll.lib
并将库放在与包含相同的目录中:discord/discord_game_sdk.dll.lib
。我已经尝试在所有项目和编译器目录中使用 32 位和 64 位库而没有改变,我相信这可能真的很简单,但我没有找到任何示例 C++ discord 程序或如何包含他们的 SDK。>
如果有人能弄清楚问题是什么以及我如何解决它,那将非常有帮助和赞赏。
编辑:
看来user4581301 是对的,TDM-GCC 和其他Mingw 编译器不支持.lib
文件,尽管已链接,也会忽略它们。除了 .dylib、.so
和 .bundle
之外,SDK 没有附带任何其他格式。
这产生了一个新问题,我已经设置了编译器并且无法真正切换到 Visual Studio,所以我需要一种方法以某种方式将 .lib
转换为 .a
。一个帖子 here 推荐 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 ...
没有其他警告。现在我需要知道我是否转换错误,是否有更简单的解决方法,或者是否可以转换或使用其他文件类型之一。欢迎并感谢此时的任何建议!
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)