【发布时间】:2015-08-25 00:34:02
【问题描述】:
是否有用于导出数据的 GetProcAddress 版本?
我想做这样的事情:
Mydll.cpp:
MyDataType::MyDataType(long, wchar_t*)
{
//Dummy code
this->temp = 3;
}
__declspec(dllexport) MyDataType Here(50, L"random text");
MyClient.cpp:
int main(void)
{
HINSTANCE hData = LoadLibrary("MyDll.dll");
reinterpret_cast<MyDataType*>(GetDataAddress(hData, "Here"))->DoSomething();
}
即定义一个UDT(“MyDataType”)的导出数据(“Here”),动态加载DLL时获取其地址。这可能吗?
【问题讨论】:
-
msdn 页面显示“从指定的动态链接库 (DLL) 检索导出函数或变量的地址。” - 即它应该只是工作(tm)
-
我同意 pm100。当 DLL 在运行时加载时,您描述的过程的哪一部分没有完成?
-
检查来自 mydll.cpp 的导出。我不知道
__declspec(dllexport)对名称进行了什么样的修改,但可能存在一些问题,因此 GetProcAddress 调用仅使用Here无法找到符号,您需要使用完整的修改名称。跨度> -
@pm100 给它一个答案,我会给你一个复选标记。谢谢;我(愚蠢地)假设我知道 GetProcAddress 做了什么。
标签: c++ dll dllexport dynamic-loading