利用matlab2014版寫的m檔案匯出dll檔案,想在vs2010下的mfc程式中呼叫,試了各種配置,一直卡死在tezhengzhiInitialize()處(dll檔案名為tezhengzhi.dll),也就是初始化庫失敗,斷點除錯指向 ExitProcess(status);
First-chance exception at 0x032343c0 in EquipMonitor.exe: 0xC0000005: Access violation.
Unhandled exception at 0x032343c0 in EquipMonitor.exe: 0xC0000005: Access violation.
有誰遇到過類似問題嗎,是matlab版本問題嗎?導致匯出的dll與vs2010不兼容,還是mfc呼叫dll需要另外注意些什么??
uj5u.com熱心網友回復:
需要看matlab和vc看是否兩者的vc版本一致 不同版本會不兼容uj5u.com熱心網友回復:
是一樣的,matlab自動識別的:MEX 配置為使用 'Microsoft Visual C++ 2010 Professional' 以進行 C++ 語言編譯。
uj5u.com熱心網友回復:
不要做A語言代碼修改為B語言代碼的無用功。也不要做用A語言代碼直接呼叫B語言代碼庫這樣復雜、這樣容易出錯的傻事。
只需讓A、B語言代碼的輸入輸出重定向到文本檔案,或修改A、B語言代碼讓其通過文本檔案輸入輸出。
即可很方便地讓A、B兩種語言之間協調作業。
比如:
A將請求資料寫到檔案a.txt,寫完后改名為aa.txt
B發現aa.txt存在時,讀取其內容,呼叫相應功能,將結果寫到檔案b.txt,寫完后洗掉aa.txt,改名為bb.txt
A發現bb.txt存在時,讀取其內容,讀完后洗掉bb.txt
以上A可以替換為任何一種開發語言或開發環境,B可以替換為任何一種與A不同的開發語言或開發環境。
除非A或B不支持判斷檔案是否存在、檔案讀寫和檔案更名。
但是誰又能舉出不支持判斷檔案是否存在、檔案讀寫和檔案更名的開發語言或開發環境呢?
可以將臨時檔案放在RamDisk上提高效率減少磨損磁盤。
資料的結構很復雜的話,文本檔案的格式問題可參考json或xml
共享臨時文本檔案這種行程之間的通訊方法相比其它方法的優點有很多,下面僅列出我現在能想到的:
·行程之間松耦合
·行程可在同一臺機器上,也可跨機,跨作業系統,跨硬體平臺,甚至跨國。
·方便除錯和監視,只需讓第三方或人工查看該臨時文本檔案即可。
·方便在線開關服務,只需洗掉或創建該臨時文本檔案即可。
·方便實作分布式和負載均衡。
·方便佇列化提供服務,而且幾乎不可能發生佇列滿的情況(除非硬碟空間滿)
·……
“跨語言、跨機,跨作業系統,跨硬體平臺,跨國,跨*.*的”苦海無邊,
回頭是“使用共享純文本檔案進行資訊交流”的岸!
uj5u.com熱心網友回復:
如果通過文本檔案來協調vs和matlab,在mfc中點擊按鈕,先將引數寫入臨時文本檔案,再打開matlab的m檔案,從臨時檔案里讀取所需引數,這樣的話,需要再次點擊m檔案里的運行按鈕才能呼叫執行,這樣一來,感覺步驟有點多uj5u.com熱心網友回復:
將活動配置平臺設定為any CPU或者x64試一試uj5u.com熱心網友回復:
照你這種說法,帶UI的行程間通信程序只能依靠人手動點擊按鈕觸發了?!
你就不會使用下列三種方法之一嗎?
①mfc中WinExec啟動matlab并自動運行指定matlab程式
②matlab程式中自動啟動mfc撰寫的exe
③批處理或父行程同時先后啟動matlab和mfc撰寫的exe
uj5u.com熱心網友回復:
定時器是干嘛使的?回圈是干嘛使的?
管道是干嘛使的?
《Unix編程藝術》
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/101191.html
標籤:進程/線程/DLL
上一篇:DirectX 中坐標問題
下一篇:VS combobox
