我想弄清楚这是如何起作用的:
所以这就是我认为问题出在哪里(我可能是错的):
我该怎么做?感谢您的任何建议。
答案 0 :(得分:1)
您必须在.NET程序集中公开某些内容。
答案 1 :(得分:1)
您的本机DLL可以是使用C ++ / CLI的混合模式native-and-.NET程序集。谷歌或在这里搜索“#pragma managed”/“#pragma unmanaged”,或者查看C ++ / CLI上的任何书籍。基本上,假设你有Visual C ++ 2010或2012,你可以写这样的东西:
#pragma unmanaged
int main()
{
CallManagedTrampoline();
}
#pragma managed
void CallManagedTrampoline()
{
TypeFromDotnetDLL t = new TypeFromDotnetDLL();
t.CallSomething();
}
实际上,根据.NET DLL中的内容的详细信息,您甚至可能不需要将#pragma托管在CallManagedTrampoline()调用之前 - 您有时可以直接从非托管代码调用。 C ++ / CLI是你的朋友。