























C++/CLI(C++ Common Language Infrastructure)是一种允许在 .NET 平台上创建托管代码(managed code)和非托管代码(unmanaged code)之间互操作的语言。其原理可以概括如下:
gcnew 创建托管对象和 delete 销毁对象),同时也可以手动管理非托管资源(如使用析构函数释放内存)。

//NativeCalculate.h #pragma once #ifndef NATIVE_CLASS_H #define NATIVE_CLASS_H class __declspec(dllexport) NativeCalculate { public: static int Add(int a, int b); }; #endif // NATIVE_CLASS_H
//NativeCalculate.cpp #include "pch.h" #include "NativeCalculate.h" int NativeCalculate::Add(int a, int b) { return a + b; }
Build CPlusNative项目确保能成功生成CPlusNative.dll和CPlusNative.lib文件




上述配置完毕后,CPlusWrapper项目创建包装类NativeCPlusWrapper
//NativeCPlusWrapper.h #pragma once using namespace System; namespace CPlusWrapper { public ref class NativeCPlusWrapper { public: static int Add(int a, int b); }; }
//CPlusWrapper.cpp #include "pch.h" #include "NativeCPlusWrapper.h" #include "NativeCalculate.h" using namespace CPlusWrapper; int NativeCPlusWrapper::Add(int a, int b) { int sum = 0; sum = NativeCalculate::Add(a, b); return sum; }
Build CPlusWrapper项目确保能成功生成CPlusWrapper.dll文件

CSharpConsoleApp项目调用NativeCPlusWrapper方法
namespace CSharpConsoleApp { class Program { static void Main(string[] args) { int sum = CPlusWrapper.NativeCPlusWrapper.Add(33, 66); } } }

程序运行目录找不到CPlusNative.dll所以报错

拷贝CPlusNative.dll 到 Debug目录下即可
或者使用Pre-build event command line

copy "$(ProjectDir)..\Debug\CPlusNative.dll" "$(TargetDir)"
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。