在x64中编译openCTM时出错
error compiling openCTM in x64
我试图在x64中使用VC12编译openCTM。OpenCTM下载路径:OpenCTM -1.0.3-src.zip
为了编译,我运行:nmake/f Makefile。msvc
设置环境我使用以下bat文件:
@rem Setting environment for using Microsoft Visual Studio x86/x64 tools.
@echo off
@if "%1"=="vc11_x86" goto set_vc11_x86
@if "%1"=="vc11_x64" goto set_vc11_x64
@if "%1"=="vc12_x64" goto set_vc12_x64
@if "%1"=="" goto error
:set_vc11_x86
@echo Setting environment for using Microsoft Visual Studio 2011 x86 tools.
set INCLUDE=^
C:Program Files (x86)Microsoft Visual Studio 11.0VCinclude;^
C:Program Files (x86)Windows Kits8.1Includeum;^
C:Program Files (x86)Windows Kits8.1Includeshared;^
C:Program Files (x86)Windows Kits8.1IncludeWinRT;
set LIB=^
C:Program Files (x86)Microsoft Visual Studio 11.0VClib;^
C:Program Files (x86)Windows Kits8.1Libwinv6.3umx86;^
C:Program Files (x86)Windows Kits8.0LibWin8umx86;
set PATH=^
C:Program Files (x86)NVIDIA CorporationPhysXCommon;^
%SystemRoot%system32;^
%SystemRoot%;^
%SystemRoot%System32Wbem;^
%SYSTEMROOT%System32WindowsPowerShellv1.0;^
C:MinGWbin;^
C:Program Files (x86)Windows Kits8.1Windows Performance Toolkit;^
C:Program Files (x86)Microsoft SDKsTypeScript1.0;^
C:QtQt5.3.15.3msvc2013_64_openglbin;^
C:Program Files (x86)Microsoft Visual Studio 11.0VCbin;^
C:Program Files (x86)Microsoft Visual Studio 11.0Common7IDE;^
C:Program Files (x86)Windows Kits8.1binx86;
goto test_bin_locations
:set_vc11_x64
@echo Setting environment for using Microsoft Visual Studio 2011 x64 tools.
set INCLUDE=^
C:Program Files (x86)Microsoft Visual Studio 11.0VCinclude;^
C:Program Files (x86)Windows Kits8.1Includeum;^
C:Program Files (x86)Windows Kits8.1Includeshared;^
C:Program Files (x86)Windows Kits8.1IncludeWinRT;
set LIB=^
C:Program Files (x86)Microsoft Visual Studio 11.0VClib;^
C:Program Files (x86)Windows Kits8.1Libwinv6.3umx86;^
C:Program Files (x86)Windows Kits8.0LibWin8umx86;
set PATH=^
C:Program Files (x86)NVIDIA CorporationPhysXCommon;^
%SystemRoot%system32;^
%SystemRoot%;^
%SystemRoot%System32Wbem;^
%SYSTEMROOT%System32WindowsPowerShellv1.0;^
C:MinGWbin;^
C:Program Files (x86)Windows Kits8.1Windows Performance Toolkit;^
C:Program Files (x86)Microsoft SDKsTypeScript1.0;^
C:QtQt5.3.15.3msvc2013_64_openglbin;^
C:Program Files (x86)Microsoft Visual Studio 11.0VCbinx86_amd64;^
C:Program Files (x86)Microsoft Visual Studio 11.0VCbin;^
C:Program Files (x86)Microsoft Visual Studio 11.0Common7IDE;^
C:Program Files (x86)Windows Kits8.1binx64;
goto test_bin_locations
:set_vc12_x64
@echo Setting environment for using Microsoft Visual Studio 2012 x64 tools.
set INCLUDE=^
C:Program Files (x86)Microsoft Visual Studio 12.0VCinclude;^
C:Program Files (x86)Windows Kits8.1Includeum;^
C:Program Files (x86)Windows Kits8.1Includeshared;^
C:Program Files (x86)Windows Kits8.1IncludeWinRT;
set LIB=^
C:Program Files (x86)Microsoft Visual Studio 12.0VClibamd64;^
C:Program Files (x86)Windows Kits8.1Libwinv6.3umx86;^
C:Program Files (x86)Windows Kits8.0LibWin8umx86;
set PATH=^
C:Program Files (x86)NVIDIA CorporationPhysXCommon;^
%SystemRoot%system32;^
%SystemRoot%;^
%SystemRoot%System32Wbem;^
%SYSTEMROOT%System32WindowsPowerShellv1.0;^
C:MinGWbin;^
C:Program Files (x86)Windows Kits8.1Windows Performance Toolkit;^
C:Program Files (x86)Microsoft SDKsTypeScript1.0;^
C:QtQt5.3.15.3msvc2013_64_openglbin;^
C:Program Files (x86)Microsoft Visual Studio 12.0VCbinx86_amd64;^
C:Program Files (x86)Microsoft Visual Studio 12.0VCbin;^
C:Program Files (x86)Microsoft Visual Studio 12.0Common7IDE;^
C:Program Files (x86)Windows Kits8.1binx64;
goto test_bin_locations
:test_bin_locations
@echo on
where nmake
where cl.exe
where link.exe
@echo off
goto:eof
:error
@echo Usage: setenv.bat [vc11_x86^|vc11_x64^|vc12_x64]
goto:eof
当我使用vc11_x86环境时,编译生成openctm.dll。
但是当使用vc11_x64或vc12_x64环境时失败。
vc12_x64 main error:
link /MACHINE:X64 /nologo /out:openctm.dll /dll /implib:openctm.lib /def
:openctm-msvc.def openctm.obj stream.obj compressRAW.obj compressMG1.obj com
pressMG2.obj Alloc.obj LzFind.obj LzmaDec.obj LzmaEnc.obj LzmaLib.obj openct
m.res
LINK : fatal error LNK1104: cannot open file 'LIBCMT.lib'
vc11_x86 main error:
Alloc.obj : error LNK2001: unresolved external symbol free
openctm.obj : error LNK2019: unresolved external symbol free referenced in funct
ion ctmFreeContext
stream.obj : error LNK2001: unresolved external symbol free
compressMG1.obj : error LNK2001: unresolved external symbol free
compressMG2.obj : error LNK2001: unresolved external symbol free
Alloc.obj : error LNK2001: unresolved external symbol malloc
openctm.obj : error LNK2019: unresolved external symbol malloc referenced in fun
ction ctmNewContext
请给我指出解决这个问题的正确方向。
好了,我找到问题了:
-
我安装了Microsoft Visual Studio Express 2013 for Windows。安装Microsoft Visual Studio Express 2013 for Desktop解决了vc12_x64问题
-
在setenv.bat文件中有对x86库的引用。正确的文件是:
@rem Setting environment for using Microsoft Visual Studio x86/x64 tools.
@echo off
@if "%1"=="vc11_x86" goto set_vc11_x86
@if "%1"=="vc11_x64" goto set_vc11_x64
@if "%1"=="vc12_x64" goto set_vc12_x64
@if "%1"=="" goto error
:set_vc11_x86
@echo Setting environment for using Microsoft Visual Studio 2011 x86 tools.
set INCLUDE=^
C:Program Files (x86)Microsoft Visual Studio 11.0VCinclude;^
C:Program Files (x86)Windows Kits8.1Includeum;^
C:Program Files (x86)Windows Kits8.1Includeshared;^
C:Program Files (x86)Windows Kits8.1IncludeWinRT;
set LIB=^
C:Program Files (x86)Microsoft Visual Studio 11.0VClib;^
C:Program Files (x86)Windows Kits8.1Libwinv6.3umx86;^
C:Program Files (x86)Windows Kits8.0LibWin8umx86;
set PATH=^
C:Program Files (x86)NVIDIA CorporationPhysXCommon;^
%SystemRoot%system32;^
%SystemRoot%;^
%SystemRoot%System32Wbem;^
%SYSTEMROOT%System32WindowsPowerShellv1.0;^
C:MinGWbin;^
C:Program Files (x86)Windows Kits8.1Windows Performance Toolkit;^
C:Program Files (x86)Microsoft SDKsTypeScript1.0;^
C:QtQt5.3.15.3msvc2013_64_openglbin;^
C:Program Files (x86)Microsoft Visual Studio 11.0VCbin;^
C:Program Files (x86)Microsoft Visual Studio 11.0Common7IDE;^
C:Program Files (x86)Windows Kits8.1binx86;
goto test_bin_locations
:set_vc11_x64
@echo Setting environment for using Microsoft Visual Studio 2011 x64 tools.
set INCLUDE=^
C:Program Files (x86)Microsoft Visual Studio 11.0VCinclude;^
C:Program Files (x86)Windows Kits8.1Includeum;^
C:Program Files (x86)Windows Kits8.1Includeshared;^
C:Program Files (x86)Windows Kits8.1IncludeWinRT;
set LIB=^
C:Program Files (x86)Microsoft Visual Studio 11.0VClib;^
C:Program Files (x86)Windows Kits8.1Libwinv6.3umx64;^
C:Program Files (x86)Windows Kits8.0LibWin8umx64;
set PATH=^
C:Program Files (x86)NVIDIA CorporationPhysXCommon;^
%SystemRoot%system32;^
%SystemRoot%;^
%SystemRoot%System32Wbem;^
%SYSTEMROOT%System32WindowsPowerShellv1.0;^
C:MinGWbin;^
C:Program Files (x86)Windows Kits8.1Windows Performance Toolkit;^
C:Program Files (x86)Microsoft SDKsTypeScript1.0;^
C:QtQt5.3.15.3msvc2013_64_openglbin;^
C:Program Files (x86)Microsoft Visual Studio 11.0VCbinx86_amd64;^
C:Program Files (x86)Microsoft Visual Studio 11.0VCbin;^
C:Program Files (x86)Microsoft Visual Studio 11.0Common7IDE;^
C:Program Files (x86)Windows Kits8.1binx64;
goto test_bin_locations
:set_vc12_x64
@echo Setting environment for using Microsoft Visual Studio 2012 x64 tools.
set INCLUDE=^
C:Program Files (x86)Microsoft Visual Studio 12.0VCinclude;^
C:Program Files (x86)Windows Kits8.1Includeum;^
C:Program Files (x86)Windows Kits8.1Includeshared;^
C:Program Files (x86)Windows Kits8.1IncludeWinRT;
set LIB=^
C:Program Files (x86)Microsoft Visual Studio 12.0VClibamd64;^
C:Program Files (x86)Windows Kits8.1Libwinv6.3umx64;^
C:Program Files (x86)Windows Kits8.0LibWin8umx64;
set PATH=^
C:Program Files (x86)NVIDIA CorporationPhysXCommon;^
%SystemRoot%system32;^
%SystemRoot%;^
%SystemRoot%System32Wbem;^
%SYSTEMROOT%System32WindowsPowerShellv1.0;^
C:MinGWbin;^
C:Program Files (x86)Windows Kits8.1Windows Performance Toolkit;^
C:Program Files (x86)Microsoft SDKsTypeScript1.0;^
C:QtQt5.3.15.3msvc2013_64_openglbin;^
C:Program Files (x86)Microsoft Visual Studio 12.0VCbinx86_amd64;^
C:Program Files (x86)Microsoft Visual Studio 12.0VCbin;^
C:Program Files (x86)Microsoft Visual Studio 12.0Common7IDE;^
C:Program Files (x86)Windows Kits8.1binx64;^
C:Program Files (x86)MSBuild12.0Binamd64;
goto test_bin_locations
:test_bin_locations
@echo on
where nmake
where cl.exe
where link.exe
@echo off
goto:eof
:error
@echo Usage: setenv.bat [vc11_x86^|vc11_x64^|vc12_x64]
goto:eof
相关文章:
- 访问者访问变体并返回不同类型时出错
- 在Linux for Windows上编译C++代码时出错
- 读取文件的最后一行并输入到链接列表时出错
- 重载操作程序时出错>>用于类中的字符串 memebr
- 调用专用模板时出错"no matching function for call to [...]"
- C++-试图将函数指针推回到另一个CPP文件中的矢量时出错
- LINK 尝试使用 OpenSSL evp aes 256 c++ 时出错
- 在Google Kick start中提交时出错
- 在c++中访问int到类对象的映射时出错
- 分段错误当我试图运行程序时出错
- 使用dynamic_cast和构造函数时出错
- CHECK(调用)函数在Google Colab中出错
- 用pybind11包装C++抽象类时出错
- 为x86而非x64编译时出错
- 从R调用C++函数并对其进行集成时出错
- 这个函数哪里出错了
- C++ 创建包含链表和字符串的对象的链接列表时出错
- 为重写std::exception的库生成swig接口时出错
- 导入/导出变量时出错
- 在x64中编译openCTM时出错