dll在VS2010项目中正常工作,但在VS6应用程序中提供访问冲突

时间:2014-08-14 16:04:06

标签: c++ visual-studio-2010 dll access-violation visual-studio-6

过去几周我一直在为USB设备创建一个dll,该设备带有自己的dll,我曾经在VS2010中创建自己的dll,然后我创建了一个测试应用程序,它在2010年使用了所有的dll让它工作。它运行良好,但我现在需要在VS6项目中使用它,当我使用它时我得到访问冲突,我在VS6中重新创建了dll以查看是否会有所帮助,它允许我进入代码,尽快它在我的dll中调用第三方dll,它导致访问冲突,我刚刚尝试创建一个工厂函数来创建一个抽象的接口到我的DLL,但我再次获得访问冲突。我是dll的新手,完全没有想法,而且帮助或洞察力会受到极大的评价......

1 个答案:

答案 0 :(得分:1)

使用Visual Studio的更高版本创建DLL以使用Visual Studio 6的方法是根据传递并返回到DLL导出函数的参数以通用方式编写DLL。

例如,Windows API描述了某些变量类型。这些类型包括DWORDLONGBOOLDWORD_PTR等。其中包括各种字符串指针类型,例如LPCSTR。此列表中还包含指向这些不同类型的指针,例如LPLONGLPBYTELPVOID等。

如果您的DLL的导出函数传递或返回的类型不是上述类型之一,那么您就会陷入困境 - 只能在使用相同版本的Visual Studio构建的应用程序中安全地使用DLL DLL是用。构建的。

例如,如果您正在传递C ++对象(标准库对象,甚至是您自己的对象),那么如果您希望该DLL可以在多个版本的Visual Studio中运行,那么这是一个很大的禁忌。