Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/164.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
msbuild-将资源文件添加到项目后静态库编译失败 我有一个C++库,它被编译为动态和静态库。最近我向源添加了资源版本文件。动态库编译工作正常,但64位目标的静态库编译开始失败,错误如下: LINK : warning LNK4068: /MACHINE not specified; defaulting to X86 x64\Release\dllmain.obj : fatal error LNK1112: module machine type 'x64' conflicts with target machine type 'X86'_C++_Visual Studio 2010_Msbuild - Fatal编程技术网

msbuild-将资源文件添加到项目后静态库编译失败 我有一个C++库,它被编译为动态和静态库。最近我向源添加了资源版本文件。动态库编译工作正常,但64位目标的静态库编译开始失败,错误如下: LINK : warning LNK4068: /MACHINE not specified; defaulting to X86 x64\Release\dllmain.obj : fatal error LNK1112: module machine type 'x64' conflicts with target machine type 'X86'

msbuild-将资源文件添加到项目后静态库编译失败 我有一个C++库,它被编译为动态和静态库。最近我向源添加了资源版本文件。动态库编译工作正常,但64位目标的静态库编译开始失败,错误如下: LINK : warning LNK4068: /MACHINE not specified; defaulting to X86 x64\Release\dllmain.obj : fatal error LNK1112: module machine type 'x64' conflicts with target machine type 'X86',c++,visual-studio-2010,msbuild,C++,Visual Studio 2010,Msbuild,以下是我的编译脚本: @ECHO OFF call "%VS140COMNTOOLS%"\\vsvars32.bat SET SourceDir=D:\Projects\MySampleLib SET TargetDir=D:\Projects\Packages ECHO 32 bit MySampleLib .LIB compilation VS2010 msbuild.exe %SourceDir%\MySampleLib\MySampleLib.vcxproj /t:Clean;Reb

以下是我的编译脚本:

@ECHO OFF
call "%VS140COMNTOOLS%"\\vsvars32.bat
SET SourceDir=D:\Projects\MySampleLib
SET TargetDir=D:\Projects\Packages

ECHO 32 bit MySampleLib .LIB compilation VS2010

msbuild.exe %SourceDir%\MySampleLib\MySampleLib.vcxproj /t:Clean;Rebuild /p:Configuration=Release;Platform=Win32;ConfigurationType=StaticLibrary;PlatformToolset=v100


ECHO 64 bit MySampleLib .LIB compilation VS2010

msbuild.exe %SourceDir%\MySampleLib\MySampleLib.vcxproj /t:Clean;Rebuild /p:Configuration=Release;Platform=x64;ConfigurationType=StaticLibrary;PlatformToolset=Windows7.1SDK
Lib.exe命令尝试链接MySampleLib.res时出错


注意:该错误仅在我添加资源文件后出现。我不想将资源文件添加到静态libs。

我最终通过修改以下.vcxproj条目解决了这个问题


这阻止了在静态编译中链接资源文件。

您不能将资源添加到静态库中。另外,由于静态lib不会被链接,所以在生成最终可执行文件时会发生链接,无论您为静态库调用链接器做了什么,都是问题的开始。Lib.exe命令是库管理器而不是链接器。@RichardCriten我不想将资源文件添加到静态库中。我只为动态版本添加了它们。在我的编译脚本中,我也没有做任何事情。你确定这与资源有关吗?错误似乎很清楚:您正在编译64位对象文件,因此提到了模块计算机类型“x64”,但没有将/machine:x64传递给链接器,因此未指定/machine;默认设置为X86,以便尝试链接32位对象文件。这不起作用,因为它有64位的对象文件。
<ItemGroup>
    <ResourceCompile Include="MySampleLib.rc" />
</ItemGroup>
<ItemGroup Condition="'$(ConfigurationType)'!='StaticLibrary'">
    <ResourceCompile Include="MySampleLib.rc" />
</ItemGroup>