gpt4 book ai didi

c++ - C++ MFC 库中无法解析的外部符号

转载 作者:行者123 更新时间:2023-11-28 07:09:16 29 4
gpt4 key购买 nike

我正在尝试在我的应用程序中实现一个 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 header 的控制台应用程序,它必须测试我的库中的功能。这是测试器的主要源文件:

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);
}
}

最佳答案

这是一个非常常见的实现,表示链接器无法找到该方法的实现。您通常会通过以下方式提供实现:

  • 将包含实现的已编译目标文件 (.obj) 传递给链接器。
  • 将包含实现的静态库 (.lib) 传递给链接器。
  • 将导入库 (.lib) 传递给链接器,以动态链接到提供实现的 DLL。

链接器告诉您您还没有完成任何这些操作。您需要决定所需的选项,然后确保链接器获得所需的内容。

在我看来,您似乎打算执行后者。该实现驻留在 DLL 中。您需要向链接器提供 DLL 的导入库。您还需要在编译 DLL 时对类使用 __declspec(dllexport),在使用类时使用 __declspec(dllimport)

关于c++ - C++ MFC 库中无法解析的外部符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21267888/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com