社区
C#
帖子详情
c# dllimport 调用多个函数
originaldream
2012-10-04 03:31:19
写了一个c++ 算法 dll , 但是需要在c#中调用,怎么只【dllimport(“”)】 一次,但能调用多个函数呢?
看了这个帖子 http://topic.csdn.net/t/20060426/19/4716244.html ,但是在我这不管用。。依然提示 请考虑添加一个dllimport 特性。
另外了解一下大家都是怎么调用c++ 计算模块的呢?都是用dllImport吗?
求大侠!!路见不平,拔刀相助!
...全文
555
5
打赏
收藏
c# dllimport 调用多个函数
写了一个c++ 算法 dll , 但是需要在c#中调用,怎么只【dllimport(“”)】 一次,但能调用多个函数呢? 看了这个帖子 http://topic.csdn.net/t/20060426/19/4716244.html ,但是在我这不管用。。依然提示 请考虑添加一个dllimport 特性。 另外了解一下大家都是怎么调用c++ 计算模块的呢?都是用dllImport吗? 求大侠!!路见不平,拔刀相助!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
originaldream
2012-10-11
打赏
举报
回复
也就是一个一个的调用更好了。只不过麻烦了点。是吗?那其他还有方法没?调用类好不好?[Quote=引用 3 楼 的回复:]
为何要用一个dllimport调用多个函数,这样做没有任何好处,既难懂又没好处,建议楼主不要考虑这个问题,
调用c++的dll当然用dllimport最好了,
[/Quote]
stonespace
2012-10-04
打赏
举报
回复
win32 dll都可以用api函数LoadLibraryEx/LoadLibrary/GetProcAddress来调用,不过很麻烦,你可以试试,
stonespace
2012-10-04
打赏
举报
回复
为何要用一个dllimport调用多个函数,这样做没有任何好处,既难懂又没好处,建议楼主不要考虑这个问题,
调用c++的dll当然用dllimport最好了,
threenewbee
2012-10-04
打赏
举报
回复
http://www.codeproject.com/Articles/1557/Late-binding-on-native-DLLs-with-C
用这个办法可以不需要申明[dllimport],动态在运行时加载函数。但是注意,这样做的根本目的是调用那些在编译的时候无法确定的dll(比如插件,运行时,用户选择了才知道,编写程序的时候鬼才知道用户会调用什么插件)。而不是为了“偷懒”的。另外需要你对Win32互操作有深刻地认识。
bdmh
2012-10-04
打赏
举报
回复
好像不能,我也希望有办法
C++DLL
C#
调用
进行重命名
将DLL放在运行目录然后 [
DllImport
("Rename.dll",EntryPoint="Rename")] public static extern void Rename(string oldpfile,string newfile); 直接
调用
Rename即可
QT编写DLL
调用
示例 方法 参数 返回值 事件回调
QT编写DLL给外部程序
调用
示例 方法 参数 返回值 事件回调 : 1:
C#
或者 NET 第一步:引入命名空间; using System Runtime InteropServices; 第二步:声明
函数
必须与实际DLL中
函数
名及参数一致; [
DllImport
"qtdll dll" ] public static extern int add int i ; 第三步:
调用
函数
执行; Console WriteLine add 10 ToString ; 2:QT 第一步:引入头文件; #include <QLibrary> 第二步:定义
函数
指针 以备
调用
; typedef int Add int ; 第三步:载入DLL
调用
函数
执行; QLibrary lib "qtdll dll" ; lib load ; Add add Add lib resolve "add" ; add 50 ; 3:C或C++ 第一步:引入头文件; #include <windows h> 第二步:定义
函数
指针; typedef int Add int ; 第三步:载入DLL
调用
函数
执行; HINSTANCE hDll LoadLibrary "qtdll dll" ; 载入DLL获取句柄 if hDll NULL { Add add Add GetProcAddress hDll "add" ; 获取
函数
地址 printf "%d" add 110 ; FreeLibrary hDll ; 释放DLL }">QT编写DLL给外部程序
调用
示例 方法 参数 返回值 事件回调 : 1:
C#
或者 NET 第一步:引入命名空间; using System Runtime InteropServices; 第二步:声明
函数
必须与实际DLL中
函数
名及参数一致; [
DllImport
"qtdll dll" ] public static extern int add in [更多]
C#
中使用
DllImport
调用
C++dll
为什么要在
C#
中
调用
C++的代码呢?比如我有一个
C#
项目要实现某种功能,同时我恰好有一个已经实现了这个功能的C++代码。我可以用
C#
重写一遍,当然如果工程比较大的话,用
DllImport
来
调用
C++的dll是一个更好的选择。由于C++dll是非托管代码,我不能直接在
C#
工程中添加引用(会出错误提示)。命名空间System.Runtime.InteropServices提供了
DllImport
C#
调用
C代码生成的DLL的
DLLImport
方式
C#
代码需要
调用
C开发的动态库时,可以使用
DLLImport
的方式。 通过来指定
调用
的dll及其路径,
调用
规范和entery point,通常这个新定义的
函数
和DLL中的
函数
同名,如果遇到传入数组形式如double *,
C#
使用double[]代替,如果传入指针类型用于返回参数,如point to int,则在
C#
中使用ref int形式。有时代码会报出"Entry Point not found"错误,这可能是DLL生成时没有extern C造成。
张赐荣:
C#
使用
dllimport
调用
本机 Win32 API
希望本文能帮助您了解
C#
平台
调用
、
DllImport
、Marshal 和 MarshalAs 的工作原理。
C#
110,545
社区成员
642,580
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章