1

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

PS:init_test() 是一个 Dll 函数 APP 是应用程序,在它的一个函数 (image(void)) 中,我包含了 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:\Users\xxx\apps\APP\APP.obj
Error   5   error LNK1120: 1 unresolved externals   C:\Users\xxx\APP.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();
}
4

1 回答 1

1

改变

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

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

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

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

于 2013-10-03T16:20:30.653 回答