【问题标题】:C++/CLI code porting problemC++/CLI 代码移植问题
【发布时间】:2010-10-04 06:53:02
【问题描述】:


我正在尝试将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^吗?

提前致谢。

【问题讨论】:

标签: c++-cli


【解决方案1】:

感谢您的评论。

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

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

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

interior_ptr<MY_HANDLE> pMyHandle;

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

[Out] IntPtr p_MyHandle

无论如何,我认为问题已经解决,因为其中一个应该可以工作。

【讨论】:

    最近更新 更多