BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #78648同步于 2014/4/25
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

求助“制作DLL文件”的方法是否可行

tastier
2014/4/25镜像同步21 回复
各位前辈,小弟毕设前半部分已用C++完成,后半部分有一个可以参考的C#源程序,现在需要将这两部分组合到一起完成毕设。请问,我可以把C++的程序制作成DLL后在C#里调用吗?或者有更好的方法请前辈赐教,谢谢! PS: 1.C++程序也有调用各种DLL文件 2.C++程序只是将一个系数给C#(有人说用socket) 3.小弟不会C#语言 我评估不出制作DLL文件的难度。。。
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
buptxrc机器人#1 · 2014/4/25
如果就是传一个系数给c#....也没有任何要求 只求运行起来的话...socket很容易的吧... 我记得我的毕设里面 是把几个东西从python 传到 c++里面...就是用socket的.... 主要是当时都是为了偷懒啦= =.....
a206206机器人#2 · 2014/4/25
可以。。我之前看的代码就是c下铺调用c佳佳的dll
tonyjansan机器人#3 · 2014/4/25
C#调用非托管代码可以直接DllImport 仅仅是传参的话:如果是窗口实例建议用WM_COPYDATA,Windows下更普适的做法是用邮槽
tastier机器人#4 · 2014/4/25
有类似的简单demo吗?我还没学过socket。。。谢谢 【 在 buptxrc 的大作中提到: 】 : 如果就是传一个系数给c#....也没有任何要求 只求运行起来的话...socket很容易的吧... : 我记得我的毕设里面 是把几个东西从python 传到 c++里面...就是用socket的.... : 主要是当时都是为了偷懒啦= =.....
Anti2005机器人#5 · 2014/4/25
没多难,总共代码不会超过100行。就是没有整过的话会多花点时间。先将 C++代码编译成动态链接库,但是要注意,使用 extern "C"来修饰,要不 dllimport 的时候会找不到函数名。具体的细节自己google。祝你好运。 【 在 tastier 的大作中提到: 】 : 各位前辈,小弟毕设前半部分已用C++完成,后半部分有一个可以参考的C#源程序,现在需要将这两部分组合到一起完成毕设。请问,我可以把C++的程序制作成DLL后在C#里调用吗?或者有更好的方法请前辈赐教,谢谢! : PS: : 1.C++程序也有调用各种DLL文件 : ...................
tastier机器人#6 · 2014/4/25
中肯啊,我也看了一点了,C++代码里也用了其它的dll,这个要作为导入函数处理吗? 【 在 Anti2005 (Anti) 的大作中提到: 】 : 没多难,总共代码不会超过100行。就是没有整过的话会多花点时间。先将 C++代码编译成动态链接库,但是要注意,使用 extern "C"来修饰,要不 dllimport 的时候会找不到函数名。具体的细节自己google。祝你好运。 通过『我邮2.0』发布
ekittying机器人#7 · 2014/4/26
如果C++调用了dll(可以有许多个,暂且记作DLL0),然后这个C++程序(EXE1)也被你封装成了dll(记作DLL1),原则上是可以通过其他语言写程序(记作EXE2)调用DLL1的 楼上说的已经基本很全了,把C++程序封装成DLL1的话,网上找找吧,不是很简单,但是照着做下来也没太多雷区 ……………………………… 上面乱七八糟的记号,我其实只是想说一个血的教训,我上面提到的DLL0,在最终程序调用的时候,请确保他们在PATH下,而不是当前EXE2程序运行目录下(当然你可以把这个目录设置在PATH中),DLL1可以在EXE2的目录中 具体原因不明,好像是你的EXE2在调用DLL1时,可以在EXE2程序当前录取下搜索dll;但是当你DLL1调用DLL0时,就不会在EXE2的当前目录里面找了……我也不知道为啥子……………… ———————————— 脑袋挺混乱,乱七八糟说了一堆,没看懂的话也无所谓,是我表达不好;如果你遇到很奇怪的问题还google不到的时候,回来再看看这段话,说不定有帮助。。。。。。
tastier机器人#8 · 2014/4/26
谢谢,差不多看明白了,exe2在调用dll1时会首先查找当前目录,然后还会查找其它的目录(记不清了),dll1调用dll0不知道,还没看过相关的知识 【 在 ekittying (从我邮滚蛋的忧伤|胖死我吧!!!) 的大作中提到: 】 : 如果C++调用了dll(可以有许多个,暂且记作DLL0),然后这个C++程序(EXE1)也被你封装成了dll(记作DLL1),原则上是可以通过其他语言写程序(记作EXE2)调用DLL1的 : 楼上说的已经基本很全了,把C++程序封装成DLL1的话,网上找找吧,不是很简单,但是照着做下来也没太多雷区 : ……………………………… : ................... 通过『我邮2.0』发布
ekittying机器人#9 · 2014/4/26
语言表达这么烂 你还看懂了辛苦你了…… exe2调用dll1是先当前,再PATH dll1调用dll0的时候不知道为什么 就不查dll1所在目录了,直奔path而去。。。。 【 在 tastier 的大作中提到: 】 : 谢谢,差不多看明白了,exe2在调用dll1时会首先查找当前目录,然后还会查找其它的目录(记不清了),dll1调用dll0不知道,还没看过相关的知识 : 通过『我邮2.0』发布