32位环境中,都正确。
在64位中,主程序传给dll的参数
主程序:
void CPlugin::Initialize(CCamera &camera, CManager &manager) const
{
……
FARPROC pFunc = GetProcAddress(m_handle, "PluginInitialize");
if (pFunc ) {
(* (PLUGIN_Initialize *)pFunc)(m_hPlugin, camera, manager); 
             //此处参数都正确
}
}插件中:
xtern "C" void __stdcall PluginInitialize(HANDLE handle, CCamera hCamera, CManager hManager)//参数已经不对了
{
AFX_MANAGE_STATE((AFX_MODULE_STATE *)AfxGetStaticModuleState);
CPluginModule *pPlugin = (CPluginModule *)handle;
if (pPlugin == NULL )
return ; pPlugin->Initialize(hCamera, hManager);
}其中:
struct CCamera {
 HANDLE hDevice;
 char   *pName;
};结果,在主程序中的hDevice都正确,一旦传给dll就不对了。
我怀疑是64位数据错位,可是怎么解决呢~!???我已经配置了64位的环境,测试时,是在真正的64位系统上测试的。