看板 C_Sharp 關於我們 聯絡資訊
最近嘗試使用C# 接券商api下單 因為每個程式下單前都要先登入券商 所以後來把登入券商這段作成自訂控制項,方便未來程式使用 而自訂控制項中就有引用券商的api,該api為c++所編譯之dll 所以使用 [DllImport("SorApi.dll", EntryPoint = "XXXX")] 來引用dll 當自訂控制項完成後,從工具箱要拉到新的form時 卻出現 無法載入DLL 'Sorapi.dll' ,找不到指定的模組 (發生例外狀況於HRESULT:0x8007007E)的錯誤 檢查後確實連同自訂控制項的dll及該dll會引用到的dll 都一併放置於新程式的bin\debug中 現在的疑問就是 若不使用自訂控制項 土法煉鋼 把登入券商的動作 直接寫在form中 就正常 但使用自訂控制項 拉到form裡 就無法載入DLL 若在DllImport時把路徑寫死,卻又可正常載入DLL,但此作法可適性差 不知各位大大是否有遇過類似狀況得以解決的嗎? 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.163.109.14 ※ 文章網址: https://www.ptt.cc/bbs/C_Sharp/M.1538014024.A.39B.html
neo5277: 那你把帳密放在appsetting裡,form的建構寫個方法call 09/27 11:12
neo5277: 應該也不用做成控制項吧? 登入失敗API應該會回MSG就EXCEP 09/27 11:13
neo5277: TION就抓他應該就好了感覺不用寫控制項啊 09/27 11:13
s4300026: 放在.sln的資料夾呢? 09/27 12:12
s4300026: 或者是.projc的資料夾? 09/27 12:13
qngu86: 謝謝n大回覆好方法,但我還是想知為何這樣不行XD 09/27 12:59
qngu86: 回s大,可以放的資料夾我都放了,除了system32 XD 09/27 13:00
※ 編輯: qngu86 (1.163.109.14), 09/27/2018 13:01:14
s4300026: 你哪些是用c#,哪些是用c++/clr 09/27 13:40
s4300026: 沒試過c# form的控制項是用外部的控制項 09/27 13:41
qngu86: 券商的dll好像是用c++寫的 其他我用c# 09/27 13:49
testPtt: 你有加入專案嗎? 09/27 16:10
s4300026: 我建議關注點分離,你做三大class。 1. 控制項就是純的 09/27 18:11
s4300026: 外框,最好能做個interface,把控制項內一定會用到的but 09/27 18:11
s4300026: ton, textbox定義一下,裡面不含任何事件處理。 2. 定義 09/27 18:11
s4300026: 後端class,專門呼叫別人的dll,最好也做interface,把 09/27 18:11
s4300026: 討人厭的import限制在這個class內。 3.溝通用class,建 09/27 18:11
s4300026: 構時輸入兩邊的interface,把所有的的事件處理寫在這裡 09/27 18:12
s4300026: 。 09/27 18:12
qngu86: 謝謝你的建議 09/27 23:41
jamyang: 印象中使用自定控制項後,相對路徑會變成執行檔的相對路 09/30 13:10
jamyang: 徑,可以確認一下是不是這個因素 09/30 13:10