c#如何调用c++的DLL
发表于:2025-02-23 作者:千家信息网编辑
千家信息网最后更新 2025年02月23日,这篇文章主要讲解了"c#如何调用c++的DLL",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"c#如何调用c++的DLL"吧!C#是托管型代码,创建的对
千家信息网最后更新 2025年02月23日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安全错误
数据库的锁怎样保障安全
网络技术还是信息技术
网络安全考证为何这么贵
服务器出现了问题什么办
广东服务器批发云空间
网络管理和服务器管理
预防网络安全诈骗班会记录
apex橘子服务器平台
网络安全协调平台技术方案
我的世界服务器被外挂摧毁
网络安全家长回执单
删除数据库的命令是
m2服务器安全码
sql2003数据库
公车管理数据库
颜色英语单词软件开发
原神服务器爆满排队照片
国内软件开发项目
长沙erp软件开发代码
苹果12手机服务器是哪里
电厂网络安全从业人员
景洋网络技术有限公司
戴尔服务器t5820不开机
六安电商软件开发定制
数据库表添加汉字不显示
关于校园网络安全的文章
iphone截图软件开发
工板服务器
江苏游戏软件开发周期
软件开发如何接活
西安疫情服务器的思考