将本机 C++ 移植到 .NET [关闭]
Posted
技术标签:
【中文标题】将本机 C++ 移植到 .NET [关闭]【英文标题】:Porting native C++ to .NET [closed] 【发布时间】:2014-05-23 15:47:29 【问题描述】:我有一组带有本地 c++ 代码的 .cpp 和 .h 文件。我想将此代码用作用 C#、Visual Studio 2010 编写的代码中的 dll 库。
你能告诉我最好的方法是什么吗?
【问题讨论】:
你可以考虑 C++/CLI。 您使用 DLLImport/PInvoke 来执行此操作。 MSDN 有很多信息,pinvoke.net 也有。 谢谢克里斯。是的,但是,你的意思是我应该把 C++ 代码翻译成 C++/CLI? 您不需要重写 DLL 代码。您的 C# 库可以从 DLL 导入函数,无论 DLL 代码是用什么语言编写的。 【参考方案1】:这是一个很好的例子,取自 this tutorial on PInvoke
-ing 取自 MSDN。
// PInvokeTest.cs
using System;
using System.Runtime.InteropServices;
class PlatformInvokeTest
[DllImport("msvcrt.dll")]
public static extern int puts(string c);
[DllImport("msvcrt.dll")]
internal static extern int _flushall();
public static void Main()
puts("Test");
_flushall();
因此,一个很好的起点是查看Platform Invoke
或只是PInvoke
这是一个很好的教程
Platform Invoke Tutorial
或
-
http://manski.net/2012/05/pinvoke-tutorial-basics-part-1/
Calling Win32 DLLs in C# with P/Invoke
【讨论】:
这非常接近仅链接的答案。你能提供一个“样本”pinvoke sn-p 或类似的东西来充实一下吗?以上是关于将本机 C++ 移植到 .NET [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
将源代码从 Visual C++ 移植到 GCC 都有哪些陷阱[关闭]
将 32 位 C++ 代码移植到 64 位 - 值得吗?为啥?