繁体   English   中英

带有VC ++的VS2005上的链接器问题

[英]Linker problem on VS2005 with VC++

这是场景:

平台:VS2005,语言为VC ++

情况:只有1个组件CMPW32。 它有2个项目:1个是名为CMPW32的DLL项目,第2个是一个名为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:未解析的外部符号“公共:__ 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。 路径也已正确设置。

如果有人可以帮我解决这个问题,那将真的很有帮助。 请让我知道是否需要其他信息。

谢谢,维伦

看起来您的Driver.exe项目没有包含CMM类的CPP源文件,可能是CMM.cpp。

要么

您已经在.H文件(CMM.H)中声明了CMM类的析构函数,却忘记了在.CPP文件(CMM.CPP)中实现它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM