【发布时间】:2014-01-21 20:01:17
【问题描述】:
我正在尝试在我的应用程序中实现一个 DLL,但是自从我编写 C++ 以来它已经过去了一段时间,所以我在这里遇到了一些麻烦...... 我在 DLL 中的类使用特定于该项目的资源文件。在这里你可以看到我的代码:
// ErrorHandler.h (in Resources.dll - an MFC Library)
namespace HandWritten
{
class ErrorHandler
{
private:
unsigned int m_error_id;
string get_error_text();
string get_error_code();
public:
ErrorHandler(unsigned int error_id);
~ErrorHandler();
};
}
我创建了一个包含 MFC 标头的控制台应用程序,它必须测试我的库中的功能。这是测试仪的主要源文件:
CWinApp theApp;
using namespace std;
int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
int nRetCode = 0;
HMODULE hModule = ::GetModuleHandle(NULL);
if (hModule != NULL)
{
// initialize MFC and print and error on failure
if (!AfxWinInit(hModule, NULL, ::GetCommandLine(), 0))
{
// TODO: change error code to suit your needs
_tprintf(_T("Fatal Error: MFC initialization failed\n"));
nRetCode = 1;
}
else
{
// TODO: code your application's behavior here.
}
}
else
{
// TODO: change error code to suit your needs
_tprintf(_T("Fatal Error: GetModuleHandle failed\n"));
nRetCode = 1;
}
new HandWritten::ErrorHandler(30001);
return nRetCode;
}
我从编译器得到的错误在这里:
error LNK2019: unresolved external symbol "public: __thiscall HandWritten::ErrorHandler::ErrorHandler(unsigned int)" (??0ErrorHandler@HandWritten@@QAE@I@Z) referenced in function _wmain E:\Applications\HandWritten\Tester\Tester.obj Tester
请帮帮我,因为如果它不起作用,我会发疯的......
*编辑:* 类构造器的实现:
namespace HandWritten {
ErrorHandler::ErrorHandler(unsigned int error_id) : m_error_id{error_id}
{
string content(MAKEINTRESOURCEA(error_id));
MessageBoxA(NULL, content.c_str(), "Ok", MB_OK);
}
}
【问题讨论】:
-
项目中是否包含了ErrorHandler的实现?
-
在哪个项目中?我当然有这个类的实现
-
查看
ErrorHandler的构造函数的实现 -
这可以编译吗?你有 {error_id} 而不是 (error_id)
-
它编译。如果我知道正确的话,可以使用
{value}构造一个 int。库可以编译,但测试器没有