我使用.Net framework 4.0在VS2012中有一个WPF应用程序项目 我的WPF应用程序有一些对Managed C ++ dll的引用。
我希望用户能够选择要打开的文件,但是当我在托管C ++ dll中的某个函数之前调用 OpenFileDialog 时,我得到一个 System.BadImageFormatException ,但如果我发送硬编码路径而不是让用户选择使用OpenFileDialog,则应用程序正常工作。
当我查找 System.BadImageFormatException 时,我发现这是指格式问题,但我在x64位机器上运行并编译包括c ++ dll到x64位格式的所有内容,我仍然继续这个例外。
OpenFileDialog是否存在一些我不知道的已知问题?
以下是我的代码示例:
private void WorkingFunction()
{
String filePath = @"C:\MyFile.txt";
// Calling the managed c++ functions...
}
private void NotWorkingFunction()
{
Microsoft.Win32.OpenFileDialog fileDialog = new Microsoft.Win32.OpenFileDialog();
Nullable<bool> result = fileDialog.ShowDialog();
if(result == true)
{
String filePath = fileDialog.FileName;
// Calling the managed c++ functions...
}
}
答案 0 :(得分:0)
您可以尝试在x86 expilicitly中编译代码,这意味着您将以32位模式运行应用程序。
否则您可以使用Windows窗体中包含的相同类。
System.Windows.Forms.OpenFileDialog