将 DLL 与应用程序链接时出现未知错误

Unknown error in when linking DLL with an application

本文关键字:未知 错误 链接 DLL 应用程序      更新时间:2023-10-16

在此链接中,我逐步介绍了如何在Visual Studio解决方案中包含dll项目当我进行测试以检查 dll 函数是否与应用程序很好地链接时,它会识别它。但?我现在有一个错误,如下所示:

PS:init_test()是一个Dll函数APP是应用程序,在其功能之一(图像(无效))中,我包括DLL:init_test()

Error   4   error LNK2019: unresolved external symbol "public: static void __cdecl DLL::init_test(unsigned long)" (?init_test@DLL@@SAXK@Z) referenced in function "public: void __thiscall APP::image(void)" (?image@APP@@QAEXXZ)   C:UsersxxxappsAPPAPP.obj
Error   5   error LNK1120: 1 unresolved externals   C:UsersxxxAPP.exe

让我试着代表我所做的:

#ifdef DLL_EXPORTS
#define DLL_API __declspec(dllexport) 
#else
#define DLL_API __declspec(dllimport) 
#endif
class DLL
{
public:
static void image_test();
};

void APP:image()
{
....
....
DLL::image_test();
}

更改

class DLL
{
public:
static void image_test();
};

class DLL_API  DLL
{
public:
static void image_test();
};

这样image_test()将被导出,除了你的DLL之外,你还将获得一个导入库。这应该有助于解决您关于同一主题的其他一些问题。

还要记住,要使其正常工作DLL_EXPORTS必须仅在您的.dll中定义,因此请C++将其添加到所有配置(调试、发布、RelWithDebInfo ...