Nuget - LNK2019 使用我的一个链接到 nuget 包的项目时

亚历山大·斯塔曼

好吧,我的问题很简单,但我想不通。

在一个解决方案中,我有一个项目(Application exe)引用另一个(lib)。该库引用了一个 nuget 包,例如 CxImage。

.目标

<?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>

构建引用此库的其他项目时,会导致 LNK2019 未解析的外部符号“public: __thiscall CxImage::CxImage(unsigned int)” (??0CxImage@@QAE@I@Z) 在函数中引用

表示找不到cxImage的lib文件。

我找到了解决问题的方法,但我认为这是不对的。在其他应用中使用的库的属性中,在Librarian > General > Additionnal Dependencies 中,我添加了 cxImage lib。我认为nuget包背后的第一个想法是避免这种事情所以......

** 它与 cxImage 无关,在任何其他情况下都会出现问题。例如我刚刚提到了这个

任何想法 ??^^

Leo Liu-MSFT

Nuget - LNK2019 使用我的一个链接到 nuget 包的项目时

您还应该将 nuget 包添加CxImage到参考项目中。

该项目引用liblib参考的NuGet包CxImage,所以项目不引用NuGet包CxImage直接,Visual Studio中/ MSBuild的尝试是聪明的,只有把引用lib过到项目而不是增加NuGet包CxImage项目。因为 Visual Studio/MSBuild 不知道CxImage项目是否需要间接引用所以Visual Studio/MSBuild不会将nuget包添加到引用项目中,避免引用污染项目。您可以参考类似问题以获取详细信息。

在这种情况下,您将收到错误“找不到 cxImage 的 lib 文件”。要解决此问题,您还应该将 nuget 包添加CxImage到引用项目中,以便 projestCxImage直接引用 nuget 包

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

创建我的nuget包

来自分类Dev

创建一个基本的NuGet包

来自分类Dev

Nuget包,用于缩短链接

来自分类Dev

在VS2019中,nuget不会将引用的项目视为lib,而是视为nuget包

来自分类Dev

在我的 nuget 包安装后执行一个操作

来自分类Dev

使用nuget包转换.csproj

来自分类Dev

使用构建后的动作创建一个nuget包

来自分类Dev

使用 dotnet cli 使用 http 版本的 nuget.org 恢复项目的 nuget 包

来自分类Dev

发布自己的Nuget包时,如何将项目引用指定为Nuget包引用?

来自分类Dev

为什么我无法从.NET项目中删除nuget包?

来自分类Dev

如何使用NuGet包添加对Visual项目的引用?

来自分类Dev

tfs build-仅使用nuspec的nuget包项目

来自分类Dev

将异常的NuGet包引用到Xamarin项目时出错

来自分类Dev

将异常的NuGet包引用到Xamarin项目时出错

来自分类Dev

使用其他包含目录时发生错误LNK2019 +致命错误LNK1120

来自分类Dev

调试时,我可以进入NuGet程序包

来自分类Dev

我可以在安装 NuGet 包时执行 npm install 吗?

来自分类Dev

使用 jsoncpp NuGet 包时获取未解析的外部符号

来自分类Dev

在一个项目中使用Packages.config的内容在新项目中加载Nuget软件包

来自分类Dev

在Nuget包C#项目中发现和使用lib文件夹时出现问题

来自分类Dev

在 NET Standard 项目中使用 .NET 4.6.1 NuGet 包时出现问题(bin 中缺少 dll)

来自分类Dev

更新nuget包以支持xamarin统一

来自分类Dev

更新nuget包以支持xamarin统一

来自分类Dev

使用nuget包部署单个文件

来自分类Dev

本地NuGet源+使用FAKE创建包

来自分类Dev

如何使用MSBuildWorkspace获取引用的nuget包?

来自分类Dev

如何使用EntityFramework CodeFirstStoreFunctions nuget包?

来自分类Dev

未使用 TFS 还原 NuGet 包

来自分类Dev

无法使用 dotnet 核心添加 nuget 包

Related 相关文章

  1. 1

    创建我的nuget包

  2. 2

    创建一个基本的NuGet包

  3. 3

    Nuget包,用于缩短链接

  4. 4

    在VS2019中,nuget不会将引用的项目视为lib,而是视为nuget包

  5. 5

    在我的 nuget 包安装后执行一个操作

  6. 6

    使用nuget包转换.csproj

  7. 7

    使用构建后的动作创建一个nuget包

  8. 8

    使用 dotnet cli 使用 http 版本的 nuget.org 恢复项目的 nuget 包

  9. 9

    发布自己的Nuget包时,如何将项目引用指定为Nuget包引用?

  10. 10

    为什么我无法从.NET项目中删除nuget包?

  11. 11

    如何使用NuGet包添加对Visual项目的引用?

  12. 12

    tfs build-仅使用nuspec的nuget包项目

  13. 13

    将异常的NuGet包引用到Xamarin项目时出错

  14. 14

    将异常的NuGet包引用到Xamarin项目时出错

  15. 15

    使用其他包含目录时发生错误LNK2019 +致命错误LNK1120

  16. 16

    调试时,我可以进入NuGet程序包

  17. 17

    我可以在安装 NuGet 包时执行 npm install 吗?

  18. 18

    使用 jsoncpp NuGet 包时获取未解析的外部符号

  19. 19

    在一个项目中使用Packages.config的内容在新项目中加载Nuget软件包

  20. 20

    在Nuget包C#项目中发现和使用lib文件夹时出现问题

  21. 21

    在 NET Standard 项目中使用 .NET 4.6.1 NuGet 包时出现问题(bin 中缺少 dll)

  22. 22

    更新nuget包以支持xamarin统一

  23. 23

    更新nuget包以支持xamarin统一

  24. 24

    使用nuget包部署单个文件

  25. 25

    本地NuGet源+使用FAKE创建包

  26. 26

    如何使用MSBuildWorkspace获取引用的nuget包?

  27. 27

    如何使用EntityFramework CodeFirstStoreFunctions nuget包?

  28. 28

    未使用 TFS 还原 NuGet 包

  29. 29

    无法使用 dotnet 核心添加 nuget 包

热门标签

归档