这是场景:
平台:
VS2005,语言是VC ++
情况:
CMPW32只有1个组件。它有2个项目:
1是一个名为CMPW32的DLL项目,第二个是一个称为Driver的.exe项目
它们在主部件文件夹下共享相同的Debug文件夹。
我已经能够从DLL成功导出一些功能。驱动程序项目访问这些导出功能中的1个。 (首先我不是如果需要将功能导出到SAME程序集中的项目中才能使用它们。我可以只包含头文件并使用我认为的功能。)
以下是一些文件中的几行代码,对于分析我的问题可能会有用:
//main.cpp file from the Driver project which is meant to generate Driver.exe
#pragma comment(lib, "winmm.lib")
#include <CM.h>
#include "conio.h"
#include "CMM.h"
#include "CMF.h"
#define C_M_F _T("c:\\CannedMessages.en-US")
int_tmain (int argc, TCHAR* argv [])
{
CMM myobjModel;
CMF::Read (CANNED_MESSAGES_FILE, myobjModel);
getch();
}
//CMM.h file
#ifndef C_M_M
#define C_M_M
#include "CMD.h"
#include "CMC.h"
#include "CM.h"
#define _C_M_DLL
#include "CMP.h"
class CM_DLL_API CMM
{ //some code here...
}
//CMF.h
#ifndef C_M_F
#define C_M_F
#include "CMM.h"
#define _C_M_DLL
#include "CMP.h"
class CM_DLL_API CMF
{ //some code here...
}
//CMP.h
#ifndef C_M_P
#define C_M_P
#include "CMD.h"
#define C_M_B_F _T("CannedMessages.")
#ifdef _C_M_DLL
#define CM_DLL_API __declspec( dllexport )
#else
#define CM_DLL_API __declspec( dllimport )
#endif
extern "C"
{
//list of functions to be exported..
}
构建解决方案时出现错误:
Error13错误LNK2019:无法解析的外部符号“ public:__thiscall CMM ::〜CMM(void)”(?? 1CMM @@ QAE @ XZ)在函数_wmain main.obj中引用
Error15致命错误LNK1120:2个未解决的外部C:\“此处我无法透露的somepath” \ Projects \ CMPW32 \ Debug \ Driver.exe
请注意:如果我选择仅构建CMPW32 DLL项目,则不会出现错误,并且会在debug文件夹中生成CMPW32.dll文件,并导出正确的功能。
但是,似乎存在一些明显的链接问题,我不知道发生了什么。我已经包含了每个必需的文件,并且还在“项目设置”的输入中输入了所需的.lib。路径也已正确设置。
如果有人可以帮我解决这个问题,那将真的很有帮助。请lemme知道是否需要其他信息。
谢谢,
维伦
最佳答案
看起来您的Driver.exe项目没有包含CMM类的CPP源文件,可能是CMM.cpp。
要么
您已经在.H文件(CMM.H)中声明了CMM类的析构函数,却忘记了在.CPP文件(CMM.CPP)中实现它。
关于c++ - 带有VC++的VS2005上的链接器问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1174264/