【问题标题】:Load DLL exported data dynamically动态加载 DLL 导出的数据
【发布时间】: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


【解决方案1】:

msdn 页面显示“从指定的动态链接库 (DLL) 中检索导出函数或 变量 的地址。” - 即它应该只是工作(tm)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-31
    • 2011-01-22
    • 1970-01-01
    • 2011-01-29
    • 2018-11-09
    • 2019-05-25
    相关资源
    最近更新 更多