一、C++类库与C#类库相互调用
2023-09-11 14:19:05 时间
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目录下
相关文章
- C#进阶系列——WebApi 接口返回值不困惑:返回值类型详解
- C# 视频监控系列(14):总结贴——VC++代码转成C#小结
- C# DataSet.RejectChanges 方法
- C# 归并排序
- Atitit.upnp SSDP 查找nas的原理与实现java php c#.net c++
- Atitit.upnp SSDP 查找nas的原理与实现java php c#.net c++
- atitit.GUI图片非规则按钮跟动态图片切换的实现模式总结java .net c# c++ web html js
- atitit.D&D drag&drop拖拽文件到界面功能 html5 web 跟个java swing c#.net c++ 的总结
- atitit.泛型编程总结最佳实践 vO99 java c++ c#.net php
- paip.java c# .net php python调用c++ c dll so windows api 总结
- paip.java c# .net php python调用c++ c dll so windows api 总结
- C# VS2010中,用微软自带的System.Data.OracleClient来连接Oracle数据库
- C#基础——循环
- C#调用C++托管类,实现C#和C++的混合编程
- (七)c#Winform自定义控件-进度条-HZHControls
- c++ clr编译dll在c#调用时出现“试图加载不正确的格式”“找不到dll”错误的解决
- c# 调用非托管c++dll 参数问题(转)
- AI模型C++部署:ubuntu安装Cython并使用C/C++调用python动态库【附加c++与python互相调用算法demo程序接口的源码】
- C# 调用C++结构体
- 本文详细阐述如何用C#创建COM组件,并能用VC6.0等调用。
- C# 释放非托管资源
- C#调用C++dll
- UWP C# 调用 C++/CX
- VS2019下C#调用C++ DLL详解+数据转换