大家好。我必须使用旧实用程序:它将 xls 转换为 txt。该实用程序的逻辑有一个小问题,但问题出在其他方面...该实用程序由两部分组成:exe模块和dll模块,并使用MFC。
在 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 参数)?