2017-11-27 20 views
0

私の問題は簡単ですが、わかりません。ナゲット - LNK2019ナゲットパッケージにリンクしているプロジェクトを使用している場合

私は1つの解決策では、別のもの(lib)を参照するプロジェクト(アプリケーションexe)があります。このlibは、CxImageなどのナゲットパッケージを参照します。

.targets

<?xml version="1.0" encoding="utf-8"?> 
<Project ToolVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
    <ItemDefinitionGroup> 
    <ClCompile> 
     <AdditionalIncludeDirectories>"$(MSBuildThisFileDirectory)include";%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> 
     <!-- patch --> 
     <AdditionalIncludeDirectories>"$(MSBuildThisFileDirectory)include\cximage";%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> 
    </ClCompile> 
    </ItemDefinitionGroup> 
    <ItemDefinitionGroup Condition="$(Configuration.ToLower().StartsWith('release')) And '$(Platform.ToLower())'=='x64'"> 
    <Lib> 
     <AdditionalLibraryDirectories>"$(MSBuildThisFileDirectory)lib\x64";%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> 
    </Lib> 
    <Link> 
     <AdditionalDependencies>CxImage.lib;jpeg.lib;png.lib;tiff.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies> 
     <AdditionalLibraryDirectories>"$(MSBuildThisFileDirectory)lib\x64";%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> 
    </Link> 
    </ItemDefinitionGroup> 
    <ItemDefinitionGroup Condition="$(Configuration.ToLower().StartsWith('debug')) And '$(Platform.ToLower())'=='x64'"> 
    <Lib> 
     <AdditionalLibraryDirectories>"$(MSBuildThisFileDirectory)lib\x64";%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> 
    </Lib> 
    <Link> 
     <AdditionalDependencies>CxImage_d.lib;jpeg_d.lib;png_d.lib;tiff_d.lib;zlib_d.lib;%(AdditionalDependencies)</AdditionalDependencies> 
     <AdditionalLibraryDirectories>"$(MSBuildThisFileDirectory)lib\x64";%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> 
    </Link> 
    </ItemDefinitionGroup> 
    <ItemDefinitionGroup Condition="$(Configuration.ToLower().StartsWith('release')) And '$(Platform.ToLower())'=='win32'"> 
    <Lib> 
     <AdditionalLibraryDirectories>"$(MSBuildThisFileDirectory)lib\x86";%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> 
    </Lib> 
    <Link> 
     <AdditionalDependencies>CxImage.lib;jpeg.lib;png.lib;tiff.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies> 
     <AdditionalLibraryDirectories>"$(MSBuildThisFileDirectory)lib\x86";%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> 
    </Link> 
    </ItemDefinitionGroup> 
    <ItemDefinitionGroup Condition="$(Configuration.ToLower().StartsWith('debug')) And '$(Platform.ToLower())'=='win32'"> 
    <Lib> 
     <AdditionalLibraryDirectories>"$(MSBuildThisFileDirectory)lib\x86";%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> 
    </Lib> 
    <Link> 
     <AdditionalDependencies>CxImage_d.lib;jpeg_d.lib;png_d.lib;tiff_d.lib;zlib_d.lib;%(AdditionalDependencies)</AdditionalDependencies> 
     <AdditionalLibraryDirectories>"$(MSBuildThisFileDirectory)lib\x86";%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> 
    </Link> 
    </ItemDefinitionGroup> 
    <ItemGroup /> 
</Project> 

このLIBを参照する他のプロジェクトを構築するとき、それはLNK2019未解決の外部シンボル "パブリック:__thiscall CxImage :: CxImage(unsigned int型)" になり(?? 0CxImage @@ QAE @ I @ Z)

cxImageのlibファイルが見つかりません。

私は問題を解決する方法を見つけましたが、私はそれが正しいとは思わないです。 他のアプリで使用されているlibのプロパティで、ライブラリアン>一般>追加の依存関係、cxImageのlibを追加しました。しかし、ナゲットパッケージの背後にある最初のアイデアは、このようなことを避けることでした...

**これはcxImageとは関係ありません。それ以外の場合は問題が発生します。私はちょうど例えばこの1つを言及しました

何か考えですか? ^^

答えて

0

Nuget - LNK2019 nugetパッケージへのリンクを自分のプロジェクト

のいずれかを使用するときは、参照プロジェクトにnugetパッケージCxImageを追加する必要があります。

プロジェクトは、プロジェクトが直接nugetパッケージCxImageを参照しないので、Visual Studioは、/ MSBuildのはスマートにのみプロジェクトに超える参照にlibをもたらすのではなく、パッケージをnuget追加しようと、liblib参照にnugetパッケージCxImageを参照しますプロジェクトにCxImageVisual Studio/MSBuildは間接的に参照CxImageを知らないので、プロジェクトで必要かどうかはです。したがって、Visual Studio/MSBuildはプロジェクトの参照汚染を避けるため、参照プロジェクトにナゲットパッケージを追加しません。詳細情報については、similar issueを参照してください。

この場合、「はcxImageのlibファイルを見つけることができません」というエラーメッセージが表示されます。この問題を解決するには、参照プロジェクトにCxImageというナゲットパッケージを追加して、プロジェストがナゲットパッケージCxImageを直接参照するようにする必要があります。

関連する問題