我有一个头文件,里面有一个“外部类定义”。这些头文件和类都在不同的 C++ 程序集中。现在在不同的 C++ 程序集中有一个类试图访问这个“外部”类函数,但是有各种各样的链接器错误,例如LNK2001: unresolved external symbol " class LMSystem LM"(?LM@@3VLMSystem@@A)
,LNK2019
等等。
以下是代码片段:用于 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 去定义类或智能感知,但理想情况下它应该指向我LM.H
头文件中的变量。我已经看到很多帖子告诉如何在另一个 C++ .dll 中使用在不同 C++.dll 中定义的一种类型的函数。有许多项目级别的设置更改,但并不总是给我正确的结果。因此,如果有人可以为我提供解决此问题的方法,那将是很大的帮助。