【发布时间】:2014-07-31 09:56:58
【问题描述】:
我有一个包含“外部类定义”的头文件。这些头文件和类都在不同的 C++ 程序集中。现在在不同的 C++ 程序集中有一个类试图访问这个“extern”类函数,但有各种链接器错误,例如LNK2001: unresolved external symbol " class LMSystem LM"(?LM@@3VLMSystem@@A)、LNK2019 等。
下面是代码 sn-p:for CPP 文件
/这个头文件包含外部引用/
#include "../lm/lm.h"
BOOL FDInitHW (void)
{
char pFileName[TALLY_MAX_PATH];
ASSERT(0 != g_pFdbPath);
strcpy(pFileName, g_pFdbPath);
strcat(pFileName, FILENAME_HW_KB);
return SUCCESS == LM.LMIOListReadSelective(pFileName,
LMIO_READREPLACE, FDGetSelectListPtrArray());
}
Lm.h 的内容
class LMSystem
{
public:
LMSystem();
~LMSystem();
// getting a specific list
short LMIOListReadSelective(char *fname, unsigned short readflags, LIST_SELECTOR* select_array[]);
};
extern LMSystem LM; // the library global LMSytem
那么你能帮我解决这个链接器错误吗?
我认为它必须与项目属性有关,因为在 VC++ 6.0 中开发的旧程序集运行良好,即使在我在 VS2012 中创建的这个 Win32 C++ 程序集中,我也可以去定义LMSystem使用 F12 或 Intellisense 的类,但理想情况下它应该指向 LM.H 头文件中的变量。
我看过很多帖子告诉如何在另一个 C++ .dll 中使用在不同 C++.dll 中定义的一种类型的函数。有许多项目级别的设置更改,但并不总是给我正确的结果。所以如果有人能给我一个解决这个问题的方法,那将是很大的帮助。
【问题讨论】:
-
类
LMSystem在哪里定义? -
您是否将此 LM 库链接到您的项目?顺便说一句,没有“C++ 程序集”之类的东西。
-
@Peter:LMSystem 类在 Lm.h 头文件中定义。请参考编辑后的代码 sn-p。 Marius:我的意思是 Win32 C++ dll
标签: visual-c++ visual-studio-2012 extern lnk2019 lnk2001