作者largesperm (Ferric)
看板C_and_CPP
標題[問題] MFC 與 Python 互通
時間Sat Nov 3 12:36:30 2018
公司買了一個繪圖引擎
是 MFC 寫的 沒有 source code 只有 API
(如果有得選 打死也不選 MFC)
目前要做的是 用 MFC 寫 plugins
主程式會自動載入 plugins
問題來了 我原本是寫應用的 非底層 用 Python 跟 C#
也非 CS 出身 壓根不懂 C/C++/底層/回收/記憶體管理等等
有嘗試著學 MFC 但是進度實在是太慢了
光是處裡檔案路徑的字串字元就搞死我了
更何況本來就要做的東西還是要繼續做 那來的美國時間
最近聽同業以前專門寫 MFC 的前輩說
有工具可以自動產生 API 讓 Python 或 C# 語言來處理
別浪費生命在 MFC 上
現在科技這麼發達 難道沒辦法用 Python 或 C# 來處理嗎
請問有關鍵字可查詢嗎 感謝
EDITED
這篇跟我遇到的狀況好像是一樣的
https://goo.gl/HU2MfU
都是有個主程式 但是要寫的是 plugins
plugins 要 dllexport 特定方法 主程式才會主動載入
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.33.11.247
※ 文章網址: https://webptt.com/m.aspx?n=bbs/C_and_CPP/M.1541219793.A.B8D.html
※ 編輯: largesperm (114.33.11.247), 11/03/2018 12:38:19
1F:→ feeya: VS的C/MFC應該可以包成lib給C#使用 11/03 13:05
※ 編輯: largesperm (114.33.11.247), 11/03/2018 15:20:04
2F:推 layan: Google SWIG 11/03 15:58
看了一下 SWIG 酷!
我大概描述一下 主程式我不用動 我要寫的是 plugin
plugin 必須要 dllexport 特定方法
主程式就會自動載入該 plugin 並在主程式的選單多一個按鈕出來
按下按鈕的時候 就會去執行其中一個特定方法
所以這樣看起來一定得要有一個 MFC dll 的外殼在
但是我實際的操作過程是寫在 Python 或 C#
那這樣要怎麼把東西塞到 MFC dll 中
兩邊又要得是互動的 例如
MFC 呼叫 Python 要去解壓縮某檔案
Python 解壓縮完要回丟解壓縮完的檔案位置給 MFC
※ 編輯: largesperm (114.33.11.247), 11/03/2018 16:16:47
3F:推 jass970991: 我比較好奇 你寫c#但不懂記憶體管理? 11/03 22:23
4F:→ largesperm: 可能是因為我寫的都是 plugins 吧 沒有特別注意記憶 11/04 00:06
5F:→ largesperm: 體這件事情 就直接寫了 效能不好再來查那邊用的時間 11/04 00:06
6F:→ largesperm: 多 再下去改 寫久了就知道那些寫法不好 11/04 00:06
7F:→ largesperm: GC 在背後可能就默默幫我做了許多事情了 11/04 00:14
8F:→ uranusjr: 聽起來你要的是顛倒, 因為主程式是 MFC, 你要掛 Python 11/04 18:34
9F:→ uranusjr: 這樣你要的應該是做出一個 Python.dll 的 MFC wrapper 11/04 18:35
10F:→ largesperm: 有道理 感謝解惑 11/05 11:45
11F:→ Zephyr750: Google: python call C API by Boost 11/08 08:29
12F:→ feeya: 其實有簡易作法 C#跟python之間用socket溝通就好啦 11/08 13:11