社区
C#
帖子详情
C#调用C语言的dll问题
superyanghua
2010-05-25 10:23:57
在C#里面调用一个用C语言写的dll,如果是用C去调用是这样的:
char str[256];
strcpy(str,"`hello!");
a = (long)str;
在C#里面不能直接这么用,我把C代码封装成unsafe段,还是解决不了。
unsafe
{
char str[256];
strcpy(str,"`hello!");
a = (long)str;
}
不知道是用的不对还是这个方法压根行不通。请高手指点,在线等待。谢谢。
...全文
156
15
打赏
收藏
C#调用C语言的dll问题
在C#里面调用一个用C语言写的dll,如果是用C去调用是这样的: char str[256]; strcpy(str,"`hello!"); a = (long)str; 在C#里面不能直接这么用,我把C代码封装成unsafe段,还是解决不了。 unsafe { char str[256]; strcpy(str,"`hello!"); a = (long)str; } 不知道是用的不对还是这个方法压根行不通。请高手指点,在线等待。谢谢。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
15 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
superyanghua
2010-05-26
打赏
举报
回复
再次谢谢大家
superyanghua
2010-05-26
打赏
举报
回复
这个问题已经解决,还是采用了P/invoke方法,在这个方法里,有个参数:在C语言中如果传递的参数是字符串数组的指针,那么在C#中声明时要用MarshalAs属性。具体代码如下:
C代码:
char str[256];
strcpy(str,"`01红`02绿`03黄");
ShowString(*, *, *, *, (long)str);
C#:
声明: unsafe static extern bool ShowString(*, *, *, *, [MarshalAs(UnmanagedType.LPStr)] string m);
调用: unsafe
{
string str1 = "`01再见!";
ShowString(*, *, *, *, str1);//
}
harderLi
2010-05-25
打赏
举报
回复
用pinvoke
加油馒头
2010-05-25
打赏
举报
回复
一般两种 方式 pinvoke
dllimport
superyanghua
2010-05-25
打赏
举报
回复
未处理的“System.AccessViolationException”类型的异常出现在 StaffManagement.exe 中。
其他信息: 尝试读取或写入受保护的内存。这通常指示其他内存已损坏。
superyanghua
2010-05-25
打赏
举报
回复
unsafe了,编译没有问题,运行过程中出错,提示:不能访问该内存,或者该内存已损坏。
yuanhuiqiao
2010-05-25
打赏
举报
回复
用指针,还是得Unsafe啊
superyanghua
2010-05-25
打赏
举报
回复
上面的工作已经完成。现在是dll里有个函数,他的一个参数是指针型,指向一个数组的起始地址。而现在C#里面无法用指针,定义一个数组,然后使用首地址的话,编译没有问题,但是执行有问题。
oncesky
2010-05-25
打赏
举报
回复
要DllImport,指定ddl文件名和EntryPoint ,调用非托管函数的外部方法
捷哥1999
2010-05-25
打赏
举报
回复
使用PInvoke实现:
创建Win32 DLL,并在C#里面调用
http://blog.csdn.net/tangl_99/archive/2006/09/06/1182354.aspx
superyanghua
2010-05-25
打赏
举报
回复
楼上的好快,呵呵.在C# 里面一个按钮里.关于dll已经引入了。
wcl1988
2010-05-25
打赏
举报
回复
在哪调用的?注意C#与C语言之间类型的对应
hualoveqi
2010-05-25
打赏
举报
回复
添加引用!
soaringbird
2010-05-25
打赏
举报
回复
把你C#里的代码贴上来,别贴伪代码
superyanghua
2010-05-25
打赏
举报
回复
用了pingvoke,好像还是不行啊,不知道是不是用错了?
c#
调用
c语言
Dll
总结来说,
C#
调用
C语言
DLL
是通过`
Dll
Import`特性实现的,这允许
C#
应用程序利用
C语言
的高效计算能力或其他特定功能。此过程涉及
C语言
DLL
的生成、
C#
的接口声明和异常处理,确保跨语言交互的正确性和稳定性。在实际开发...
C#
调用
C语言
DLL
文件示范
###
C#
调用
C语言
DLL
文件示范 #### 知识点概述 在软件开发领域,经常会出现不同编程语言之间的交互需求。例如,在.NET框架中使用
C#
开发的应用程序可能需要
调用
C语言
编写的动态链接库(
DLL
)来实现特定功能。本篇...
C#
调用
QT的
dll
方法
C#
调用
QT的
dll
方法 在这篇文章中,我们将讨论如何在
C#
中
调用
QT的
dll
方法。首先,我们需要在QT平台上建立一个
dll
工程,设置头文件和源文件,然后生成
dll
文件。最后,我们可以在
C#
中使用
Dll
Import特性来
调用
dll
方法。...
c#
调用
qt
dll
总结来说,
C#
调用
Qt
DLL
涉及的关键点有: - 使用P/Invoke特性进行跨语言互操作。 - 正确地定义
C#
接口以匹配
DLL
函数的签名,包括参数类型和
调用
约定。 - 对于回调函数,使用委托在
C#
中封装方法,并传递给
DLL
。 - 注意...
c#
调用
c++
dll
调用
opencv-wechat微信识别二维码。
本案例中,我们将探讨如何使用
C#
调用
C++编写的
DLL
,该
DLL
内部集成了OpenCV库来处理微信二维码的识别。OpenCV是一个强大的计算机视觉库,而微信二维码识别则涉及移动支付和社交应用中的关键功能。 首先,我们需要...
C#
111,119
社区成员
642,545
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章