通过 C++ cli DLL 在 UWP 中访问文件

file access in UWP through c++ cli DLL

我有一个 wpf 应用程序,它使用用 C++/CLI 创建的 DLL。

DLL 从安装文件夹中读取文件。它在启动时执行此操作而不使用文件选择器。

实际上DLL使用OpenCV,我调用了一个opencv函数来加载文件。

我这样做..

 std::string pathUnmanged = msclr::interop::marshal_as<std::string>(file)

然后将 pathUnmanaged 传递给加载文件的 OpenCV 函数。

这里path只是文件名和扩展名。

这在发布版本中对我有用。但是,如果我使用桌面桥转换为 windows 商店应用程序 UWP,则文件不会加载。

有人能给我指出正确的方向吗?

在WPF发布模式下,当你点击你的exe启动你的应用程序时,当前目录被设置为与exe相同的文件夹,所以程序可以使用"filename.ext".[=12定位文件=]

但是,将其打包到商店应用程序后,当前目录可能其他地方

您可以将此行添加到 WPF 程序的 Main 方法中以检查当前目录在哪里。

MessageBox.Show(Environment.CurrentDirectory);

如果是这样,请使用文件的完整路径。可以通过这种方式获取完整路径

var fullFileName = System.IO.Path.Combine(System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location),
            "filename.ext");

我用 C# 编写,但您可以轻松地将其转换为 C++/CLI。