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安全错误
数据库的锁怎样保障安全
云媒科技互联网服务
前端实现服务器渲染
linux服务器上传jar包
数字优搜网络技术有限公司天眼
手机应用软件开发专业
网络技术fddi
固原软件开发设计方案
西门子博途wincc自带数据库
吃鸡调服务器
数据库表及结构课件ppt
软件开发流程 管理规定
数据库表之间一定要有外键吗
第五空间网络安全大型专题片
app服务器端安全认证
统信服务器操作系统好不好用
江苏电话软件开发系统
学高级软件开发要用什么本
仁宝电子软件开发
分布式集群服务器
有关网络安全主题小报
网络安全工作的组织
单用户数据库系统
逃跑吧少年服务器错误怎么办
误删数据库的后果
数据库信息特点
附加xskc数据库
网络安全在国防中的重要意义
神经网络软件开发技术
GEO数据库数据不好用
医院信息科数据库要怎么维护