我正在寻找将 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。我知道这不太好,但我看不到任何其他方式。
有人发现我的代码有问题吗?