在过去的几周里,我一直在为 USB 设备创建一个 dll,该设备带有自己的 dll,我曾经在 VS2010 中创建自己的 dll,然后我创建了一个测试应用程序,它在 2010 年使用所述 dll 让它工作. 它工作得很好,但是我现在需要在 VS6 项目中使用它,当我使用它时,我遇到访问冲突,我在 VS6 中重新创建了 dll 以查看是否有帮助,它允许我尽快进入代码它到达我的 dll 中调用 3rd 方 dll 的行,它导致访问冲突,我刚刚尝试创建一个工厂函数来创建我的 dll 的抽象接口,但我再次遇到访问冲突。我是 dll 的新手,完全没有想法,并且非常需要帮助或洞察力......
问问题
135 次
1 回答
1
使使用更高版本的 Visual Studio 创建的 DLL 与 Visual Studio 6 一起使用的方法是,根据传递和返回给 DLL 导出函数的参数,以通用方式对 DLL 进行编码。
例如,Windows API 描述了某些变量类型。这些类型包括DWORD
, LONG
, BOOL
,DWORD_PTR
等。包括各种字符串指针类型,例如LPCSTR
. 此列表中还包括指向这些不同类型的指针,例如LPLONG
,LPBYTE
等LPVOID
。
如果您的 DLL 的导出函数传递或返回的类型不是上述类型之一,那么您就会陷入困境 - DLL 只能在使用与 DLL 相同版本的 Visual Studio 构建的应用程序中安全使用建于。
例如,如果您要传递 C++ 对象(标准库对象,甚至是您自己的对象),如果您希望该 DLL 能够跨多个 Visual Studio 版本工作,那么这是一个很大的禁忌。
于 2014-08-14T16:33:47.940 回答