c#如何调用c++的DLL
发表于:2025-01-16 作者:千家信息网编辑
千家信息网最后更新 2025年01月16日,这篇文章主要讲解了"c#如何调用c++的DLL",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"c#如何调用c++的DLL"吧!C#是托管型代码,创建的对
千家信息网最后更新 2025年01月16日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安全错误
数据库的锁怎样保障安全
互联网科技龙头股
笔记本代理服务器黑屏
通信管理服务器srrc认证
济南九翔网络技术有限公司
西安tctf网络安全竞赛
全国特种设备人员数据库
动易cms默认数据库
杭州网络安全专业排名
移动互联网汽车黑科技
公安网络安全措施
护苗网络安全教育规章制度
数据库驱动包放置在哪里查询
互联网时代有哪些科技
centos8 服务器配置要求
化学按照什么分类建立数据库
工厂信息及网络安全培训ppt
无线通信网络技术ppt
甘肃手机软件开发价格
织信上海网络技术有限公司
js查询mysql数据库
软著软件开发人证明
北广数据库
鄞州原创网络技术有限公司
昌平区有哪些软件开发公司
什么是常见的桌面型数据库
网络安全重要性
特斯拉网络安全顾问
PPDB数据库
app局域网数据库
昌平区正规软件开发推荐