经由一个指针,使用P在C#实例化一个C ++类/调用

问题描述 投票:1回答:2

我从导入的C#应用​​程序中的非托管的DLL mscorpe.dll的CreateICeeFileGen()函数,以产生一个PE文件。这个函数返回一个指向C ++对象defined here,有没有什么办法可以从该类通过C#访问域或者我需要写一个非托管的包装DLL?

我目前使用的代码如下: -

[DllImport(@"C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\mscorpe.dll", EntryPoint = "CreateICeeFileGen")]
static extern void CreateICeeFileGen(out IntPtr iceeFileGenPointer);
...
IntPtr filePtr;
CreateICeeFileGen(out filePtr);    

N.B:我知道你可以做类似的事情与.NET库,但我需要使用非托管库,我的目的。

c# .net pinvoke
2个回答
2
投票

你需要一个包装库,以便能够使用类从C#。

最好的办法是创建使用C ++ / CLI的包装,它可以直接调用非托管函数,并与托管类暴露的细节。这将消除需要使用的P / Invoke的任何东西。

(当然,从技术上如果您知道类布局你可以更动指针算法访问的字段,但这将是非常脆弱的,凌乱,并试图调用虚函数以这种方式将是极其丑陋的)。


0
投票

它看起来像COM类/接口。你能不能只使用COM呢?

© www.soinside.com 2019 - 2024. All rights reserved.