我正在编写一个非托管 dll(使用 c++ 和 WinAPI),但我想使用一些 C# 方法,因此,我使用 C++/CLI 创建了一个包装器。
但问题是:非托管 dll 将被“注入”(LoadLibrary),我被困在这里,不知道如何调用 Wrapper 函数。
非托管代码:
#include <Windows.h>
//the function I want to call
__declspec(dllexport) void SimpleTest(int *p);
extern "C" __declspec(dllexport) void MyEntryPoint()
{
int* test;
SimpleTest(test);
}
BOOL WINAPI DllMain(/*DllMain parameters*/)
{
switch(fdwReason)
{
case DLL_PROCESS_ATTACH:
MyEntryPoint();
break;
}
return TRUE;
}
包装器(C++/CLI):
__declspec(dllexport) void SimpleTest(int* p)
{
*p = 1;
}
我不知道这里发生了什么。.NET 环境没有加载?Wrapper DLL 没有加载?(我遍历了模块并且包装器不存在)。
我必须手动初始化 CLR 吗?
我阅读了有关加载程序锁定的信息,但我不确定这是否是这里的问题。