有些C++项目中也用了C语言.c,用方法一就无法使用【不能使用 /clr 选项编译 C 文件】。就用方法2。
方法二:COM方式
参考: https://www.5axxw.com/questions/content/2ozion
1.C# 生成dll
cs
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++调用示例
cs
#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;
}