【问题标题】:Loading CLR dll from Native code从本机代码加载 CLR dll
【发布时间】:2014-07-22 11:22:08
【问题描述】:

我正在尝试使用以下代码:

LoadLibraryExA(filename.c_str(), NULL, DONT_RESOLVE_DLL_REFERENCES);

从本机程序集中加载 C++\CLR dll。 返回的 HMODULENULLGetLastError 返回 - 193 这意味着 is not a valid win32 application

如何正确加载库?我究竟做错了什么? 谢谢! 罗恩

【问题讨论】:

  • 加载 DLL 后,您想对它做什么?您知道不能将其视为非托管 DLL 吗?
  • “视为非托管 DLL”是什么意思。 dll 有一个我想使用的单例类(它被声明为没有'ref',所以据我所知 - 它是原生的......?)

标签: c++ clr native loadlibrary


【解决方案1】:

如果您的 cmets 指出这是一个混合模式 DLL,那么ERROR_BAD_EXE_FORMAT 的通常解释是主机进程的位数与 DLL 的位数不匹配。您正在尝试将 32 位 DLL 加载到 64 位进程中,反之亦然。

如果您有匹配的位数,那么最可能的解释是 DLL 是托管 DLL 而不是混合模式 DLL。

【讨论】:

  • 主机和CLR dll都配置为平台-“win32”
  • 我猜那个DLL不是混合模式。无论如何,您将如何从 DLL 中导入一个类?我认为您需要加载时间链接。
  • 如何将其配置为“混合模式”?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-01
相关资源
最近更新 更多