无法在Visual Studio 2008中编译z3库

时间:2015-06-11 20:35:43

标签: visual-studio-2008 z3

我想在目前使用VS2008(.net framework 3.5)构建的winforms应用程序中使用z3 4.4托管API。我可以在.net 4.x应用程序中使用z3而不会出现问题,但是由于与z3无关的原因,升级当前应用程序以使用.net 4.x目前是不可行的。我能够构建api并在我的应用程序中包含Microsoft.z3.dll。但是,当从VS2008命令提示符编译z3 C ++库时,我会遇到许多错误,其中尝试将const_iterator隐式转换为迭代器。示例:

  

duality_solver.cpp   .. \ src \ duality \ duality_solver.cpp(243):错误C2440:'初始化':无法从'std :: _ Tree< _Traits> :: const_iterator'转换为'std :: _ Tree< _Traits> :: iterator'           同           [               _Traits =标准:: _ Tset_traits,性病::分配器,假>           ]           没有构造函数可以采用源类型,或者构造函数重载解析是不明确的

将std :: _ Tree< _Traits> :: iterator更改为std :: _ Tree< _Traits> :: const_iterator消除了这些错误。但是,复制到VS2008项目的bin \ x86目录的结果z3lib.dll总是会产生运行时错误:

  

无法加载DLL'libz3.dll':找不到指定的模块。 (HRESULT异常:0x8007007E)

如果libz3.dll与api dll(Microsoft.z3.dll)位于同一目录中,也会发生这种情况。我还确保z3和我的项目是为同一平台(x86)构建的。 使用VS2013构建的libz3.dll会在VS2008项目中产生相同的运行时错误。可以在Visual Studio 2008项目中使用z3版本4.4.0吗?如果是这样,我如何确保可以加载libz3.dll以避免上述错误?

1 个答案:

答案 0 :(得分:0)

我们不会在VS 2008上构建和测试,而且还会在某些方面进行构建和测试 转到不支持的C ++语言功能 在旧平台上(但支持跨操作系统和 较新的编译器。)

在我的一台机器上,我使用社区(免费)版本的VS2013来构建Z3。