c#如何调用c++的DLL
发表于:2025-11-06 作者:千家信息网编辑
千家信息网最后更新 2025年11月06日,这篇文章主要讲解了"c#如何调用c++的DLL",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"c#如何调用c++的DLL"吧!C#是托管型代码,创建的对
千家信息网最后更新 2025年11月06日c#如何调用c++的DLL
这篇文章主要讲解了"c#如何调用c++的DLL",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"c#如何调用c++的DLL"吧!
C#是托管型代码,创建的对象会自动回收。C++是非托管型代码,创建的对象需要手动回收(有时不手动回收,可能出现内存溢出的问题)。
C#调用C++的方式分为两种:(1)采用托管的方式进行调用;(2)非托管的方式进行调用。
1.采用托管的方式进行调用,就和正常调用c#的dll一样
创建新的c++项目
Function.h中的代码,一个返回两数之和的方法,一个返回字符串的方法
#pragma once#includepublic ref class Function{public: Function(void); ~Function(void); int menber; int menberFuncAdd(int a,int b); System::String^ say(System::String^ str);}; //.cpp#include "Function.h"Function::Function(void){}Function::~Function(void){} int Function::menberFuncAdd(int a,int b){ return a+b;}System::String^ Function::say(System::String^ str){ return str;}
Function.h中空白不用写
#include "Function.h"
注意:c++的项目一定要选择公共语言运行时支持
在c#的项目中像引用c#的dll一样引用

代码中调用
Function fun = new Function(); int a = fun.menberFuncAdd(1, 2); string s = fun.say("Hello World");注意:c#项目一定要选择x86,否则要报错。
运行效果:
2.非托管的方式进行调用
创建新的c++项目

stdafx.h中的代码
// stdafx.h : 标准系统包含文件的包含文件,// 或是经常使用但不常更改的// 特定于项目的包含文件// #pragma once #include "targetver.h"#ifdef A_EXPORTS#define DLL_API __declspec(dllexport)#else#define DLL_API __declspec(dllimport)#endif#define WIN32_LEAN_AND_MEAN // 从 Windows 头文件中排除极少使用的信息// Windows 头文件:#includeextern "C" DLL_API void MessageBoxShow(); // TODO: 在此处引用程序需要的其他头文件
dllmain.cpp中的代码
#include "stdafx.h"BOOL APIENTRY DllMain( HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved ){ switch (ul_reason_for_call) { case DLL_PROCESS_ATTACH: case DLL_THREAD_ATTACH: case DLL_THREAD_DETACH: case DLL_PROCESS_DETACH: break; } return TRUE;} #ifdef _MANAGED#pragma managed(push, off)#endif void MessageBoxShow(){ MessageBox(NULL, TEXT("Hello World"), TEXT("In a DLL"), MB_OK);} #ifdef _MANAGED#pragma managed(pop)#endif注意:c++的项目一定要选择公共语言运行时支持
在代码加上
[DllImport("ll.dll")] public extern static void MessageBoxShow();注意:c#项目一定要选择x86,否则要报错。
运行结果:
感谢各位的阅读,以上就是"c#如何调用c++的DLL"的内容了,经过本文的学习后,相信大家对c#如何调用c++的DLL这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!
c#
c++
项目
代码
文件
方式
托管
运行
选择
学习
内容
对象
手动
方法
语言
问题
C#
C++
管型
支持
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
金融软件开发公司 广东
用友t3提取开票软件数据库
安卓软件开发实践周士凯
可以创建数据库的网站制作平台
数据库安全配置管理规范
软件开发基本规则
opc服务器开发
苹果4s无法连接服务器
集群与数据库的区别
我的世界超能力服务器
医院信息科一般用什么数据库
工业网络安全在科技强国的作用
获取服务器配置信息失败怎么解决
怎么看服务器是不是三线
软件开发乙方跳槽银行甲方
网络安全锁安装
软件开发项目介绍
长春会务无纸化软件开发
川渝网络安全应急演练
网络安全能力测试报告
数据库原理与应用循环语句
公务员五年服务器包括试用期吗
数据库的范式优化实际例题
如何配置计算机为ftp服务器
ftp 服务器配置
单串口服务器报价
网络安全培训 报道
江西浪潮服务器维修调试多少钱
嵌入式系统软件开发通常采用
网络安全博览会 暗网