推 art1: 你的 Python123 檔案呢?02/16 02:16
→ art1: 123.py 才對02/16 02:17
A大您好,我忘記放了,真的不好意思
https://glot.io/snippets/fvwz2xprsu
我有另外執行123.py,就會出現圖片這樣的結果
→ ketrobo: 這個exception訊息很明確,就是swig載入這隻程式時,找不02/16 04:17
→ ketrobo: 到原本講好要給他用的boost:: program_options:: value02/16 04:17
→ ketrobo: _semantic_codecvt_helper,同時,發生這個問題的時間點是02/16 04:17
→ ketrobo: 在執行程式的時候,這意味著程式碼都已經編譯完成,沒有語02/16 04:17
→ ketrobo: 法上的錯誤02/16 04:17
※ 編輯: asd24693120 (223.137.6.236 臺灣), 02/16/2021 09:13:09
K大您好,但是我不是很懂已經有include進去也能用cpp跑,為什麼轉成so就會找不到這
呢?想請問這樣的問題該如何解呢?
※ 編輯: asd24693120 (118.169.185.235 臺灣), 02/17/2021 13:49:30
→ smartclever: 應該是沒-lboost_program_options吧02/17 18:43
那想請問該如何解決呢
→ ketrobo: 找個工具檢查shared library相依關係02/18 08:29
請問k大是這個嗎?
https://i.imgur.com/rVjD9Fr.jpg
→ descent: 你在 .h 上加上 extern "C" 試試02/18 17:54
→ zo6596001: c++編譯的so檔function name是亂碼02/18 18:33
→ zo6596001: python 跟c語言在link的時候找到是明碼。02/18 18:34
→ zo6596001: 加上extern c就可以了。02/18 18:35
我在.h檔加上extern c後,好像還是一樣
https://i.imgur.com/y6SX9oX.jpg
→ zo6596001: 你可以嘗試把c++跟C語言編譯出來的so檔dump出來,檢查f02/18 18:41
→ zo6596001: unction name是否為亂碼。02/18 18:41
→ Lipraxde: 亂碼…恩…02/18 19:48
→ ketrobo: 那個看起來亂碼的其實是叫mangling,這個錯誤跟mangling02/18 21:25
→ ketrobo: 沒關係02/18 21:25
※ 編輯: asd24693120 (118.169.185.235 臺灣), 02/19/2021 11:24:05
※ 編輯: asd24693120 (118.169.185.235 臺灣), 02/19/2021 11:30:33
謝謝k大的解釋,想請問k大目前這樣該怎麼處理
※ 編輯: asd24693120 (118.169.185.235 臺灣), 02/19/2021 11:31:26
※ 編輯: asd24693120 (118.169.185.235 臺灣), 02/19/2021 11:35:10
→ ketrobo: 因為可能帶入錯誤的情境很多,主要是查你用的compiler/l02/19 13:14
→ ketrobo: ibrary版本和編譯時的參數,可能的就是下了std=c++14這些 02/19 13:14
→ ketrobo: ,以及有沒有連結到正確的library02/19 13:14
→ zo6596001: 要不要嘗試用ctypes?? 02/19 16:55
→ zo6596001: 我自己用python call c library都會用ctypes,可以省02/19 16:58
→ zo6596001: 掉很多麻煩。02/19 16:58
因為之前有參考過ctypes的用法,也有自己嘗試過,但因為失敗,所以就有點放棄,不知
道z大是否能指導?
→ ketrobo: 如果只是想測看看能不能動,把program option 帶入的參數 02/19 18:10
→ ketrobo: 直接刻在程式裡,把program option 相關的程式碼移除掉, 02/19 18:10
→ ketrobo: 應該有機會跑完02/19 18:10
回k大,因為這個c++這個程式碼是我學長給我的,因此我也不知道是否哪些地方可以忽略
,想請問照您這樣的方法,是否會影響到原本的結果?
※ 編輯: asd24693120 (111.250.156.31 臺灣), 02/20/2021 16:41:02
→ ketrobo: program option 只是讀取使用者輸入的參數 02/20 18:37
好的,我再試試,謝謝k大
推 hellophoenix: 以前碰過compiler判斷沒使用到的function所以沒l 02/20 23:47
→ hellophoenix: ink,但是實際跑是會跑到,然後就會出這種runtim 02/20 23:47
→ hellophoenix: e 才找不到symbol 的問題,給你參考。02/20 23:47
那想請問h大,這樣要怎麼解決呢?因為目前就是compile沒過
※ 編輯: asd24693120 (42.77.4.236 臺灣), 02/25/2021 07:30:20
推 hellophoenix: k大的在makefile 補上-l試過了嗎 02/26 19:46
→ hellophoenix: 錯了 是s大 02/26 19:46