有些C++项目中也用了C语言.c,用方法一就无法使用【不能使用 /clr 选项编译 C 文件】。就用方法2。
方法二:COM方式
参考: https://www.5axxw.com/questions/content/2ozion
1.C# 生成dll
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;using System.Runtime.InteropServices;namespace ClassLibrary1
{public class Class1{public interface IMyClass{void Initialize();void Dispose();int Add(int a, int b);}public class MyClass : IMyClass{public void Initialize(){}public void Dispose(){}public int Add(int a, int b){return a + b;}}}
}
编译正常,C# dll就完成了。
2.C++调用示例
#include <iostream>
using namespace std;#import "../x64/Debug/ClassLibrary1.tlb"int main()
{CoInitialize(NULL); // 初始化com环境ClassLibrary1::IMyClassPtr p(__uuidof(ClassLibrary1::MyClass));cout << p->Add(3, 4) << endl;system("pause");return 0;
}