File 通过c+在UWP中访问文件+;cli动态链接库

File 通过c+在UWP中访问文件+;cli动态链接库,file,io,uwp,c++-cli,File,Io,Uwp,C++ Cli,我有一个wpf应用程序,它使用用C++/CLI创建的DLL DLL从安装文件夹中读取文件。它在启动时执行此操作,而不使用文件选择器 实际上DLL使用OpenCV,我调用OpenCV函数来加载文件 我这样做 std::string pathUnmanged = msclr::interop::marshal_as<std::string>(file) std::string pathnamged=msclr::interop::封送(文件) 然后将pathUnmanaged传递给

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

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

实际上DLL使用OpenCV,我调用OpenCV函数来加载文件

我这样做

 std::string pathUnmanged = msclr::interop::marshal_as<std::string>(file)
std::string pathnamged=msclr::interop::封送(文件)
然后将
pathUnmanaged
传递给加载文件的OpenCV函数

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

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


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

在WPF发布模式下,当您单击exe启动应用程序时,当前目录被设置为exe的同一文件夹,因此程序可以使用“filename.ext”定位文件

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

您可以将这一行添加到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

多谢各位。这是现场…但是,有打字错误…你是指System.Reflection.Assembly.GetExecutionGassembly().Location…你能编辑你的答案,我会接受吗???