C ++ / CLI代码移植问题

时间:2010-10-03 06:41:33

标签: c++-cli


我正在尝试将C++.NET(托管扩展程序)应用程序移植到C++/CLI。但是我的语法还不是很强。

我要做的是为C Dll文件创建一个包装器。

要做到这一点,我正在使用DllImport,但我没有找到有关它的文档。由于语法的变化存在一些问题,但我还没找到原因。

C++.NET行看起来像这样:

[DllImport("my.dll", CharSet = Ansi,  CallingConvention = Cdecl, EntryPoint = "#10")]
 static MY_STATUS CPPInit(MY_HANDLE *pLmxHandle);

我们的想法是将MY_HANDLE的引用传递给初始化它的函数。一个问题是关键字AnsiCdecl未知。我希望我需要在他们面前放一些课程,但没有文档或样本会有点困难。

我的另一件事是一个返回静态字符串的函数:

char *MyFunc();

我可以假设它可以映射到String^吗?

提前致谢。

1 个答案:

答案 0 :(得分:0)

感谢您的评论。

我心里想,我需要构建一个混合模式库以避免p / invoke。这只需要一些时间。

实际上我用另一种方式解决了编译错误。虽然我还没有测试它,因为我面临一些32/64位问题,由于Whidbey beta2中的其他错误,我无法解决这些问题。

我的解决方案是以下列方式编写原型:

interior_ptr<MY_HANDLE> pMyHandle;

根据我的理解,它应该为函数提供dll函数的引用(因此是地址)。一旦我试一试,我会看看我的想法是否奏效 否则我会选择以下选项(我已经提供):

[Out] IntPtr p_MyHandle

无论如何,我认为问题已经解决,因为其中一个应该有用。