通过c ++ cli DLL在UWP中进行文件访问

时间:2017-06-16 09:35:46

标签: file io uwp c++-cli

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

DLL从安装文件夹中读取文件。它在启动时不使用文件选择器。

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

我这样做..

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

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

此处path只是文件名和扩展名。

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

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

1 个答案:

答案 0 :(得分:1)

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

然后,将此打包到Store应用程序后,当前目录可能其他地方

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

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

如果是这种情况,请使用文件的完整路径。可以通过这种方式检索完整路径

int Process::processTextFile(const boost::filesystem::path& infile)
{
    const char *file = infile.string().c_str();
    uint16_t num_lines = 0;
    .
    .
    .
    FILE *fp;
    fp = fopen(file, "r");
    .
    .
    //Use fp for reading and stuff.
}

我用C#编写,但你可以轻松地将它翻译成C ++ / CLI。