我在自动生成UWP项目以正确复制和链接非COM本机DLL时遇到问题。
基本上,每当我运行应用程序时,在我构建它之后,它都找不到链接的DLL。
我已经将DLL文件添加到了项目的根目录中。因为它们不是类型化库,所以我不能将它们作为引用添加到项目中,而是必须使用DllImport
。我已经将DLL文件的构建操作设置为“Content”,复制设置为“Always”。
我也尝试过从kernel32到输出路径的SetDLLDirectory,但是不起作用。
我已经检查了输出目录,DLL文件被正确地复制到了基本AppX文件夹中,但仍然出现了该错误。
有一个变通的办法。如果我把DLL文件复制到入口点文件夹,它只包含输出exe,那么它就可以工作。但是它要求我在编译后手动复制文件。考虑到这一点,我也尝试在DllImport
路径中使用append "..\\"
,但是这次我得到了拒绝访问错误。
我希望找到一种方法来配置Visual Studio中的项目,以便将文件复制到那里,或者以某种方式使用基本AppX目录来查找DLL。
1条答案
按热度按时间23c0lvtd1#
我发现了这个问题,DLL文件损坏了。复制一组新的DLL文件似乎可以解决这个问题。WPF项目中的工作案例是一个侥幸,因为我从源代码中复制了一组新的DLL文件。在将相同的DLL文件复制到UWP项目中后,所有问题都解决了。
我感到惊讶的是,这两个DLL文件的错误信息是丢失的,它的损坏是一个和相同的,这让我困惑的问题,它是一个路径解析的问题。