我正在开发一个使用c++库的。net应用程序。一个库是使用另一个c++库的c++/CLR库。使用这些库的应用程序至少需要在Windows 7上运行。该系统使用Visual Studio 2019编译,并使用最新的SDK。据我所知,如果至少针对Windows 7,使用最新的SDK是可能的。
当我在Windows 7上启动应用程序时,我得到以下错误:
无法加载由"XXX.Net.dll"导入的过程。
在Windows 10上运行没有问题
XXX.Net.dll
是使用c++库的c++/CLR库。
我读到设置WINVER
和_WIN32_WINNT
宏将显式地针对所需的版本。我根据微软的指示添加了这些定义:
修改头文件中的宏(例如targetver.h
)
因此,在我的c++库中,我向targetver.h
添加了以下宏声明:
#define WINVER 0x0601
#define _WIN32_WINNT 0x0601
据我所知,这应该允许库在Windows 7上正常运行。有人能告诉我为什么这行不通吗?
注意:我们使用Ninject将所有二进制文件打包到主二进制文件中。这个错误发生在
这一行new StandardKernel(new Bindings().
OK—我已经决定直接测试库失败—并发现库正在访问Windows 7上不可用的SDK操作—这导致库失败。