大家好。 我必須使用舊的工具:它將xls轉換爲txt。 在實用程序的邏輯中存在一個小問題,但問題在於其他事情... 該實用程序由兩部分組成:exe模塊和dll模塊,並使用MFC。函數在dll中沒有收到CString參數值
在EXE項目,我們有
pInit = (t_bXR_Init)GetProcAddress(hExcel, _T("bXR_Init"));
和
pInit("logfiles",false);
在DLL項目,我們有
typedef bool (*t_bXR_Init) (CString const &strlogfilespath, bool btxtfile); XLSREADER_API bool bXR_Init(CString const &strlogfilespath, bool btxtfile);
問題是當我們將參數"logfiles"
發送到它沒有得到它的函數中。很奇怪,因爲所有其他參數都能正確發送。
原因與CString的使用有某種聯繫。但我不知道作爲
XLSREADER_API是如何定義...:
#define XLSREADER_API extern "C" __declspec(dllimport)
而且我在函數體的開頭添加
AFX_MANAGE_STATE(AfxGetStaticModuleState());
(用於bXR_Init) 。但它沒有幫助。我試圖改變這兩個項目的一些設置,所有設置都是相同的(例如調用轉換爲__cldecl(/ Gd);我構建調試版本exe和dll或同時發佈exe和dll版本)。
此外,我試圖用CString
而不是CString&
- 相同的情況。如果使用char*
,它會正常工作,但老闆說,首先要找出問題的根源。
什麼可能導致問題(該函數沒有獲取CString參數)?
所以程序編譯,如果我正確理解問題。是用C++編寫的dll,它使用的是MFC嗎? bXR_Init函數在strlogfilespath參數中得到了什麼,一個空字符串或垃圾? –
是的,使用MFC。垃圾。 –
嘗試使用反彙編窗口進行調試(但必須瞭解一些x86彙編語言)。這已經幫助我找出類似的問題(不是在Windows上)。 –