Jon*_*ury 16 c++ dll visual-studio-2010
我有一个非常简单的DLL,用我从我的应用程序访问的非托管C++编写.我最近切换到Visual Studio 2010,并且DLL从55k下降到35k而没有更改代码,现在它将不再在Windows 2000中加载.我没有更改任何代码或编译器设置.我有我的0x0500定义设置,应该包括Windows 2000支持.有没有其他人遇到这个,或者对我能做什么有任何想法?
Bil*_*eal 12
Visual Studio 2010无法构建在Windows 2000上运行的二进制文件.实际上甚至更糟糕的是,它们也无法在Windows XP RTM或Windows XP Service Pack 1上运行.这是因为VS2010的C运行时库需要EncodePointer API,该API在SP2之前不可用.
如果你想支持早期版本的Windows,看起来你正在坚持安装VS2008.您可以将整个项目移动到Visual Studio 2008,也可以从Visual Studio 2010项目中定位vc90(Visual Studio 2008)工具集.有关后一种方法的更多详细信息,请参阅此处的相关问题.
解决方案可能是在一个单独的lib中提供EncodePointer(和DecodePointer,显然),并优先链接到KERNEL32.LIB.这是完全支持的方案.在过去,像"LIBCTINY"和"UNICOWS"这样的库已经使用这种优先链接机制来添加/替换来自另一个lib的所选函数而不是所有函数.
| 归档时间: |
|
| 查看次数: |
8589 次 |
| 最近记录: |