首页 > 解决方案 > 协助将基本 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 ...

没有其他警告。现在我需要知道我是否转换错误,是否有更简单的解决方法,或者是否可以转换或使用其他文件类型之一。在这一点上的任何建议都受到欢迎和赞赏!

标签: c++discordlinkerlinker-errorsdev-c++

解决方案


推荐阅读