VB6 ブール変数を関数 (C++、stdcall で記述) に渡すための最も安全な方法を探しています。
C++ 関数は、この VB6 変数を使用して構造体の「bool」変数を設定します。
C++ で次のように宣言してみました。
extern "C" __declspec(dllexport) int SetParameter( BOOL bErrorView)
{
DLL_sSettings nSet;
nSet.bErrorView =(bErrorView != FALSE);
int ret = stSetParameter(sizeof(DLL_sSettings), nSet);
return (ret);
}
stSetParameter は次のように宣言されています。
extern "C" int ST_COMDLL_API stSetParameter(int DataLen, DLL_sSettings Settings);
DLL_sSetting は次のように宣言されます。
typedef struct
{
bool bErrorView; // true: Show
// false: Don't show
(...)
} DLL_sSettings;
しかし、私はそれを機能させることができません。
私はVB6でそれを呼び出します
Private Declare Function SetParameter Lib "MyDLL.dll" Alias "_SetParameter@4" (ByVal bErrorView As Boolean) As Long
しかし、期待どおりに動作しません.VB6ブール値がどこかで失われたか、間違って変換されていると思います.
現在、VB6 Boolean、C++ BOOL、および C++ bool を使用しています。それがあまり良くないことはわかっていますが、他に方法がありません。
誰かが私のコードに何か問題を見つけましたか?