c#如何调用c++的DLL
发表于:2024-10-02 作者:千家信息网编辑
千家信息网最后更新 2024年10月02日,这篇文章主要讲解了"c#如何调用c++的DLL",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"c#如何调用c++的DLL"吧!C#是托管型代码,创建的对
千家信息网最后更新 2024年10月02日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安全错误
数据库的锁怎样保障安全
数据库中空置在哪里
图片 数据库数据类型
系统软件开发结束语
网络技术服务转包是否合法
网络安全作业人员配备标准
游戏服务器机械硬盘扩容
红茶传奇3数据库编辑工具
系统存储结构及数据库设计
数据库dmp dp的区别
阿里云服务器端口设置
济南旭昌网络技术
中国知网数据库三种进入途径
网络安全主题班会课ppt
三级网络技术是题库吗
ibm服务器大全
ipadid显示无法联系服务器
vfp如何打开数据库
28元服务器
国外app软件开发商
服务器晚续费导致小程序打不开
沈阳圣普网络技术有限公司
win2008服务器管理
数据库安全性配置
怎么在数据库中删除一个流程
金蝶k3打印凭证附单数据库
服务器硬件扩配实施方案
机架服务器图标
苏州互联网软件开发都干啥
数据库连接字符应该怎么写
安徽pdu服务器专用电源定制