[问题] 使用c++/clr做为c#与c++的桥梁 (已解决)

楼主: s4300026 (s4300026)   2017-06-10 11:11:25
开发平台(Platform): (Ex: Win10, Linux, ...)
vc 2013
编译器(Ex: GCC, clang, VC++...)+目标环境(跟开发平台不同的话需列出)
c++/clr
额外使用到的函数库(Library Used): (Ex: OpenGL, ...)
io card 6308
问题(Question):
我有使用某家公司出的外部硬件
我想要把该设备的占用,使用,释放写成native c++ class
然后封装成dll档 (已完成)
然后我想要使用c#的视窗接口作为人机接口(已完成)
因此我使用c++/clr,撰写managed c++,
里面使用native c++的指标指向我的native c++ class(已完成)
然后再将managed c++包成dll档(已完成)
供人机接口呼叫(已完成)
我想问的是,编译时可过
呼叫的时出现 file not found 错误
该怎么解决这样的问题呢?
喂入的资料(Input):
预期的正确结果(Expected Output):
错误结果(Wrong Output):
Compile的结果
http://imgur.com/mkhsV8O
执行的结果
http://imgur.com/mDZQZQV
System.IO.FileNotFoundException
BadImageFormatException
程式码(Code):(请善用置底文网页, 记得排版)
方案的编排
http://imgur.com/0af27w3
Native 专案
设定 http://imgur.com/cazUfFj
head http://imgur.com/9Wb1zYU
cpp http://imgur.com/NCwafaL
Managed 专案
设定 http://imgur.com/d8ggBbC
head http://imgur.com/uwIvqFk
cpp http://imgur.com/0vyE5JF
CSharp 专案
设定 http://imgur.com/HbhYv00
cpp http://imgur.com/ifhz7n5
补充说明(Supplement):
使用manged c++ include native c++ .h 和 dll
使用 managed c++ reference managed c++ 的dll
目前绕过去的方法 (可行的方法)
方案 http://imgur.com/8HTnOxS
head http://imgur.com/x9PmU0i
cpp http://imgur.com/nR1fYla
如果你想问差在哪?
就是全部塞在一个专案里 "很丑"
我喜欢做成一方案多专案
native 一个专案
managed 一个专案
myForm 一个专案
作者: james732 (好人超)   2017-06-10 11:40:00
C#应该可以直接吃C/C++的DLL?
作者: petercoin (彼得币)   2017-06-10 12:17:00
C#用Dllimport就可以用C/C++的dll了
楼主: s4300026 (s4300026)   2017-06-10 14:02:00
我使用c++/clr,他可以只要include .h 和dll,不用import指令
作者: kwpn (ITSST)   2017-06-10 15:28:00
用include .h 不用import指令 的好处是什么?
作者: CoNsTaR ((const *))   2017-06-10 17:48:00
因为 type safe?
作者: TobyH4cker (Toby (我要当好人))   2017-06-10 19:31:00
阿所以你CLI→native又是怎么实作的include header 和 DLL 老实讲一点线索都没有
楼主: s4300026 (s4300026)   2017-06-10 21:31:00
好处是懒啊~~~我可能要后天才能给code,手边没电脑更新完成~ 我用fopen模拟外部原件 因此不要问我说Csharp 有相同功能的东西,为什么要用C的...感谢大家~ 希望code不会写得很乱看不懂...
作者: FrozenMoment   2017-06-11 15:32:00
C sharp 有试过改成 prefer x86 吗?
楼主: s4300026 (s4300026)   2017-06-11 18:26:00
没有耶,但我觉得不是那个问题... 我觉得问题可能是managed看不到native,虽然都是dll因为相同的程式码全混在一起是可以run的
作者: firose (guest也是也是也是也是也)   2017-06-11 23:27:00
直接下中断点除错不是比较快?
作者: TobyH4cker (Toby (我要当好人))   2017-06-12 09:54:00
所以最后问题时DLL不在EXE的search path?是
作者: FrozenMoment   2017-06-12 19:32:00
解成功了吗?
楼主: s4300026 (s4300026)   2017-06-12 21:24:00
done

Links booklink

Contact Us: admin [ a t ] ucptt.com