Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.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
C++ 在UWP应用程序中包含第三方DLL-一步一步?_C++_Visual Studio_Dll_Win Universal App_Uwp - Fatal编程技术网

C++ 在UWP应用程序中包含第三方DLL-一步一步?

C++ 在UWP应用程序中包含第三方DLL-一步一步?,c++,visual-studio,dll,win-universal-app,uwp,C++,Visual Studio,Dll,Win Universal App,Uwp,我正试图在Visual Studio 2017的通用Windows平台应用程序中包含第三方DLL。具体而言,我下载了Autodesk FBX SDK(Visual Studio 2015 UAP版本,从:),其中包含我的平台的.lib和.dll文件 我在Visual Studio中将相关的.lib(x86/release或x86/debug)添加到我的其他依赖项中,但不确定如何使应用程序知道DLL。构建应用程序包失败,尝试直接运行程序在运行时失败,可能是因为DLL加载失败 我花了很多时间阅读关于

我正试图在Visual Studio 2017的通用Windows平台应用程序中包含第三方DLL。具体而言,我下载了Autodesk FBX SDK(Visual Studio 2015 UAP版本,从:),其中包含我的平台的.lib和.dll文件

我在Visual Studio中将相关的.lib(x86/release或x86/debug)添加到我的其他依赖项中,但不确定如何使应用程序知道DLL。构建应用程序包失败,尝试直接运行程序在运行时失败,可能是因为DLL加载失败

我花了很多时间阅读关于UWP的文章,但我完全被它的复杂性和不透明性所迷惑。我想我需要:

  • 将DLL复制到我的Visual Studio项目目录中。但是在哪里呢?我如何让VisualStudio承认这一点?我可以在解决方案资源管理器中将它添加为文档类型的内容,但它似乎没有被构建所接受

  • MS support()告诉我,我需要将其作为包依赖项添加到package.appxmanifest文件中,但我找不到任何具体的示例来说明如何做到这一点

  • 我只是想说清楚:我没有这个DLL的源代码。很确定这是一个UWP构建的DLL。我只想让它被我的项目识别,并在我创建它时导出到应用程序包中。是的,有一个静态库我可以链接,但迟早,我将需要一个DLL唯一的库,并将不得不学习得到这个权利。我认为MSDN有一个指导如何做到这一点的指南,但数小时的搜索并没有产生任何结果:(

    谢谢,


    巴特

    Aman Sharma:谢谢。但添加引用似乎不起作用(它不像DLL文件)。不过,我还是设法让它按如下方式工作:

  • “添加->现有项…”到项目根目录
  • 在dll文件上单击鼠标右键,选择“属性”,然后通过将“内容”设置为“真”,将该文件标记为“内容”
  • 奇怪的是,FBX SDK文档声称必须定义FBXSDK_DLL,但这样做会导致编译失败

    另外,有点麻烦的是,DLL文件必须在项目根目录中。它不能被移动到子文件夹(例如,Assets/或DLL/或其他任何文件夹)。也许有办法在清单中指定路径


    无论哪种方式,简单地添加它并将其标记为内容都不会在清单文件中创建依赖项,正如我在MSDN论坛上被告知的那样。

    当您在解决方案中添加一些第三方项目(dll,比如TreeViewControl)时,我自己就发现了这一点

    您需要右键单击您的项目->添加->引用,转到项目,解决方案,选中第三方项目名称左侧的框(本例中为TreeViewControl)并重新编译。

    我直接编辑了项目文件(*.vcxproj),如下所示。这对我适用

    <?xml version="1.0" encoding="utf-8"?>
    <Project ToolsVersion="15.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    
      ... other settings ...
    
      <ItemGroup>
        <Content Include="..\Path\To\$(PlatformTarget)-$(Configuration)\some.dll">
          <CopyToOutputDirectory>Always</CopyToOutputDirectory>
        </Content>
      </ItemGroup>
    
    </Project>
    
    
    …其他设置。。。
    总是
    

    另请参见

    如果它只是一个您想要使用的DLL,则右键单击解决方案资源管理器中的项目->添加->添加引用,从中浏览您的DLL。