我有一个wpf应用程序,它使用用C ++ / CLI创建的DLL。
DLL从安装文件夹中读取文件。它在启动时不使用文件选择器。
实际上DLL使用OpenCV,我调用opencv函数来加载文件。
我这样做..
std::string pathUnmanged = msclr::interop::marshal_as<std::string>(file)
然后将pathUnmanaged
传递给加载文件的OpenCV函数。
此处path
只是文件名和扩展名。
这适用于发布版本。但是,如果我使用桌面桥转换为Windows应用商店UWP,则文件不会加载。
有人能指出我正确的方向吗?
答案 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。