移植到x64:MFC x86 DLL实现用于MS Word,Access,DAO的OLE自动化
几年前我写了一个应用程序,我正在移植到x64。 它由一个使用.Net 1.1的VB.Net GUI和几个非托管C ++ DLL组成。
更新程序进展顺利。 VB.Net程序在.Net 4.0上运行良好,除了一个之外的所有DLL都可以正常运行64位DLL。对于不以64位运行的DLL,我创建了一个存根,它只返回每个函数调用的SUCCESS。
我遇到64位麻烦的DLL使用MFC并使用OLE自动创建MS Word文档并使用DAO更新Access数据库。
由于MS Word和DAO仅在32位上可用,因此我使用DLL Surrogate创建了一个COM服务器来运行代码。我关心的问题是使用指针来回传递参数。
这是我正在使用的示例C ++原型:
DWORD dtmDBaseToTags
( IN const struct UserData_t * pzUserData
, IN struct DataTag_t* pzDataTag
);
此函数使用pzDataTag中的名称从Access数据库中提取数据并将其放入struct pzUserData。
我不认为这会在COM / ActiveX边界上起作用。
如何使用64位指针在32位进程中访问内存?
ActiveX COM服务器DLL是否能够访问64位内存?
将此代码移植到64位的最佳操作步骤是什么?