[問題] 使用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的結果

執行的結果

System.IO.FileNotFoundException
BadImageFormatException
程式碼(Code):(請善用置底文網頁, 記得排版)
方案的編排

Native 專案
設定

head

cpp

Managed 專案
設定

head

cpp

CSharp 專案
設定

cpp

補充說明(Supplement):
使用manged c++ include native c++ .h 和 dll
使用 managed c++ reference managed c++ 的dll
目前繞過去的方法 (可行的方法)
方案

head

cpp

如果你想問差在哪?
就是全部塞在一個專案裡 "很醜"
我喜歡做成一方案多專案
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