1、C++調用C#類庫
1.准備C#類庫(dll文件)
1.1.創建C#類庫:
右擊項目類庫生成即可,
出現.dll(類庫)與.pdb(pdb文件包含了編譯后程序指向源代碼的位置信息,
用於調試的時候定位到源代碼,主要是用來方便調試的)兩個文件。
設置僅僅生成.dll類庫,可以刪除.pdb文件
1.准備C++類庫(dll文件)
在VS2017中新建->項目->Visual C++->Windows桌面->動態鏈接庫;
在項目屬性中->常規中選擇無公共語言支持,即不創建托管C++類庫;
右鍵頭文件---》添加---》新建項(添加.h頭文件)
右鍵源文件---》添加---》新建項(添加.cpp源文件)
代碼分別:
mydll.h:
#pragma once extern "C" _declspec(dllexport) int _stdcall add(int a,int b);
mydll.cpp:
#include "stdafx.h" #include "mydll.h" int _stdcall add(int a, int b) { return (a+b); }
然后右鍵解決方案---》重新生成解決方案(先選擇Release)(已經生成動態庫了)
此路徑
c#調用
using System; using System.Runtime.InteropServices; namespace ConsoleAppTemp { class Program { [DllImport("DllTest.dll")] //DllImport 必須引用using System.Runtime.InteropServices; public static extern int add(int a, int b); //可以通過EntryPoint特性指定函數入口,然后為函數定義別名 [DllImport("HelloWorldLib.dll", EntryPoint = "add")] public static extern int CustomName(int a, int b); static void Main(string[] args) { int a = add(1, 2); Console.WriteLine("輸出結果為:" + a.ToString()); //跟上面是一樣的 int b = add(1, 2); Console.WriteLine("輸出結果為:" + b.ToString()); Console.ReadKey(); } } }
打開前面C++庫生成的目錄,將HelloWorldLib.dll復制到C#工程的Debug目錄下。
也可以不復制,只需在引用dll的時候寫上完整路徑就行了。這里我是直接復制到Debug目錄下