我正在尝试通过LoadLibrary加载C#dll。我能够成功加载它。你能告诉我如何为这个dll使用GetProcAddress,这样我就可以使用这个dll中定义的metods和类型。
提前致谢!!!
答案 0 :(得分:1)
编辑
1 - 此问题的最佳方法是COM。您应该设置AssemblyInfo
以将程序集公开为COM(ComVisible(true)
)。请参阅此Microsoft建议:
2 - 如果您的Windows Vista或更高版本具有bitlocker,BitLocker
可能会有用。
3 - 但是如果你不能使用COM,请在代码项目中查看:
答案 1 :(得分:0)
根据这个链接:
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感到满意,请编辑我的答案,以包含更好的包装器示例。