gpt4 book ai didi

c++ - 未解析的外部符号 - 来自 C++ dll 的 LNK2019

转载 作者:太空宇宙 更新时间:2023-11-04 12:14:54 26 4
gpt4 key购买 nike

我使用 GetProcAddress 从 C++ dll 加载一个 GetInstance 函数到我的基本代码并得到一些 Unresolved external symbol 错误:

error LNK2019: unresolved external symbol "_declspec(dllimport) public: unsigned int _thiscall RegTestAPI::CTestmode_Sle70::SetMSfr(unsigned int,unsigned short,char *)" (_imp?SetMSfr@CTestmode_Sle70@RegTestAPI@@QAEIIGPAD@Z) referenced in function "int __cdecl SetUserDescriptor(unsigned char,unsigned int,unsigned int)" (?SetUserDescriptor@@YAHEII@Z)

动态链接库代码

标题

extern "C" _declspec(dllexport) CTestmode* GetInstance();

来源

CTestmode *cTestmode;

extern "C" _declspec(dllexport) CTestmode* GetInstance()
{
cTestmode = CTestmode::Instance();

return cTestmode;
}

...

// in header
static CTestmode* Instance();
...
static CTestmode* m_pInstance;

// in source
CTestmode* CTestmode::Instance()
{
if(m_pInstance == NULL)
{
m_pInstance = new CTestmode();
}

return m_pInstance;
}

工具代码

typedef CTestmode* (*CTestModeInstance)(void);

CTestmode *pMyTM;

...

HMODULE handleTestmode;
handleTestmode = LoadLibrary("Testmode.dll");

CTestModeInstance cTestModeInstance = (CTestModeInstance)GetProcAddress(handleTestmode, "GetInstance");

pMyTM = (cTestModeInstance)();

我的想法是调用约定有问题(查看错误消息 -> __thiscall 和 __cdecl 提示:两个项目都设置为 __cdecl (/Gd))?!

知道为什么这行不通吗?

提前致谢!

问候

最佳答案

错误消息不容易阅读,但不言自明。函数 CTestmode_Sle70::SetMSfr 在函数 SetUserDescriptor 中被引用,但它没有在任何地方定义。链接器无法将调用绑定(bind)到 SetMSfr,因为该函数不存在。

关于c++ - 未解析的外部符号 - 来自 C++ dll 的 LNK2019,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8155046/

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