我正在尝试通过 LoadLibrary 加载 C# dll。我能够成功加载它。你能告诉我如何为这个 dll 使用 GetProcAddress,以便我可以使用这个 dll 中定义的方法和类型。
提前致谢!!!
编辑
1 - 解决此问题的最佳方法是 COM。您应该设置AssemblyInfo
以将程序集公开为 COM ( ComVisible(true)
)。请参阅此 Microsoft 建议:
2 - 如果您的 Windows Vista 或更高版本具有 bitlocker,BitLocker
可能会很有用。
3 - 但如果您不能使用 COM,请在代码项目中查看:
根据此链接:
http://social.msdn.microsoft.com/Forums/br/vcmfcatl/thread/cadd6150-de10-47c5-bd5c-a356741c36b3
GetProcAddress 将始终为托管 DLL 返回 NULL,因为它没有导出。
话虽如此,有更好的方法可以从非托管代码访问托管代码。您应该围绕非托管程序集创建一个 C++/CLI 包装器,然后您可以从非托管包装器函数内部导出托管调用。
假设您在课堂上的托管功能之一A
是
public static void Foo() {}
您可能有 C++ 代码:
DLLEXPORT void FooThunk() {
A::Foo();
}
PS:如果有人对 C++/CLI 感到满意,请编辑我的答案以包含此类包装器的更好示例。