社区
C#
帖子详情
c#如何调用c/c++的dll库
wyman25
2010-08-26 10:13:56
我已经知道调用的语法,但我想知道以下两点:
1:这些非托管DLL是不是要实现什么接口,或者遵循某些协议,才能被C#调用?
2:是否能调用C语言写的DLL?或者说是否只能调用C++写的,不能调用C写的?
...全文
239
13
打赏
收藏
c#如何调用c/c++的dll库
我已经知道调用的语法,但我想知道以下两点: 1:这些非托管DLL是不是要实现什么接口,或者遵循某些协议,才能被C#调用? 2:是否能调用C语言写的DLL?或者说是否只能调用C++写的,不能调用C写的?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
wind_199
2010-08-26
打赏
举报
回复
互作有几种方式的:
1. P/Invoke , 就是导出函数, c# 那边 dllimport 的方式
2. com interop, c++ 编写 com 组件, c# 创建组件使用.
3. c++/cli 程序集, c# 可以直接引用使用.
4. 要是算上进程间通讯的, 那就更多了.
deyygywxf
2010-08-26
打赏
举报
回复
1.使用C++创建 DLL, 不需要实现接口, 但是你的方法需要外面被调用的话,应该申明为导出
2.不管是C写的还是C++写的DLL,只要符合1的条件,就可以被C# 或者其他语言调用
-小蕾-
2010-08-26
打赏
举报
回复
学习了。
problc
2010-08-26
打赏
举报
回复
_declspec(dllexport)
gomoku
2010-08-26
打赏
举报
回复
[Quote=引用 6 楼 wuyq11 的回复:]
导出函数声明 extern "C"
[/Quote]
这个是错的。
用C惯例并不是必须,用C惯例是#3楼Bloodish朋友说的为了避免C++的混乱命名(C++会添加很多信息用于对付重载)。
导出函数可以:
方法1、提供一个.def的定义文件,并列举导出函数:
EXPORTS
; Explicit exports can go here
Func1
Func1
方法2、可以用微软的预编译命令_declspec(dllexport)来标注导出函数。
Dobzhansky
2010-08-26
打赏
举报
回复
互作有几种方式的:
1. P/Invoke , 就是导出函数, c# 那边 dllimport 的方式
2. com interop, c++ 编写 com 组件, c# 创建组件使用.
3. c++/cli 程序集, c# 可以直接引用使用.
4. 要是算上进程间通讯的, 那就更多了.
porschev
2010-08-26
打赏
举报
回复
http://blog.csdn.net/jadeflute/archive/2010/06/21/5684687.aspx
wuyq11
2010-08-26
打赏
举报
回复
导出函数声明 extern "C"
wuyq11
2010-08-26
打赏
举报
回复
[DllImport("a.dll", CharSet = CharSet.Auto)]
hyblusea
2010-08-26
打赏
举报
回复
创建一个C/C++的类,按照以下格式,在头文件中申明导出函数
extern "C" _declspec(dllexport) int TestMethod(int a);
然后在CPP文件,实现该方法.
你可以在网上下载一个<导出函数查看器>,可以看到这个方法...
bloodish
2010-08-26
打赏
举报
回复
要以C的方式导出extern "C"
C++由于函数可以重载,导出的函数名可能并不是原来的函数名.
hyblusea
2010-08-26
打赏
举报
回复
1.使用C++创建 DLL, 不需要实现接口, 但是你的方法需要外面被调用的话,应该申明为导出
2.不管是C写的还是C++写的DLL,只要符合1的条件,就可以被C# 或者其他语言调用
gomoku
2010-08-26
打赏
举报
回复
要
导出函数
。
C也可以做。
C#
调用
C/
C++
DLL
收取中文字符处理
C#
可以通过P/Invoke
调用
C/
C++
写的
DLL
,一般在从
DLL
接收字符串时比较麻烦,本人在某个项目中遇到这个问题, 从
DLL
收读取字符串时遇到中文乱码,这里总结一下
C#
收取字符串时的处理。 C/
C++
字符串一般通过char* 或wchar_t*来表示,char*表示的是ANSCII字符串, wchar_t*表示Unicode字符串,Unicode字符串在C/
C++
中一个字符占用两个字节,ANSII字符串一个字符占用一个字节(中文占用两个字节), 如果
C++
的接口声明为char*的入口参数时,
C#
需要使用byte[] 数组来表示字节缓冲, 注意
C#
中char 是占用两个字节的。
Demo: c/
c++
动态
库
(
DLL
)
调用
,
c#
等其他语言
调用
c/
c++
的
DLL
c++
动态
库
调用
另一个动态
库
c++
动态
库
调用
c动态
库
c#
等其他语言
调用
c/
c++
动态
库
C#
调用
C/
C++
Dll
中函数实例代码
实例代码说明如何在托管的
C#
代码中
调用
非托管的Win32 API或者自己用C/
C++
写的
Dll
中的函数,以及如何传递输入、输出字符串参数,结构类型参数等问题。
C#
【必备技能篇】VS2019 使用C/
C++
生成
DLL
文件,并用 C/
C++
、
C#
调用
DLL
在
C#
开发软件的过程中,要经常
调用
C/
C++
生成的
dll
,本文主要介绍用C/
C++
生成
dll
的步骤,以及用C/
C++
、
C#
两种语言实现
dll
的引用实现。本文使用的IDE是VS2019,文章通过具体实例进行讲解,大家可以跟着自己动手进行测试。 原文链接:https://blog.csdn.net/sinat_40003796/article/details/124348814
C#
使用CLR
调用
C++
的
DLL
库
C#
使用CLR
调用
C++
的
DLL
库
的windows完整解决方案 说明如下: 1、工程一:
C++
的
DLL
2、工程二:
C++
的CLR的类
库
3、工程三:
C#
的exe
C#
110,538
社区成员
642,577
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章