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

时间:2013-10-03 07:18:44

标签: c++ visual-studio-2010 opencv dll

我按照一步一步的步骤如何在这个link的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();
}

1 个答案:

答案 0 :(得分: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 ++ /预处理器/预处理器定义中(调试,发布,RelWithDebInfo ...)