【问题标题】:file access in UWP through c++ cli DLL通过 c++ cli DLL 在 UWP 中访问文件
【发布时间】:2019-02-12 06:05:52
【问题描述】:

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

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

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

我这样做..

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

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

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

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

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

【问题讨论】:

    标签: file io uwp c++-cli


    【解决方案1】:

    在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.GetExecutingAssembly().Location....您可以编辑您的答案,我会接受吗???
    猜你喜欢
    • 2019-10-04
    • 1970-01-01
    • 2017-02-13
    • 2015-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-14
    相关资源
    最近更新 更多