皆さんこんにちは。xls を txt に変換する古いユーティリティを使用する必要があります。ユーティリティのロジックに小さな問題がありましたが、問題は別のところにあります... ユーティリティは、exe モジュールと dll モジュールの 2 つの部分で構成され、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 用)。しかし、それは役に立ちませんでした。
また、これら 2 つのプロジェクトのいくつかの設定を変更しようとしましたが、すべての設定は同じです (たとえば、変換の呼び出しは __cldecl(/Gd) です。デバッグ バージョンの exe と dll をビルドするか、リリース バージョンの exe と dll を同時にビルドします)。
また、同じ状況CString
で - の代わりに使用しようとしました。CString&
使えばちゃんと動くのですchar*
が、上司はまずどこが悪いのか調べろと言います。
何が問題につながる可能性がありますか (関数は CString パラメーターを取得しません)?