У меня есть проект приложения WPF в VS2012 с использованием .Net Framework 4.0.
В моем приложении WPF есть ссылки на управляемые библиотеки C ++.
Я хотел бы, чтобы пользователь мог выбрать файл для открытия, но когда я вызываю OpenFileDialog перед какой-то функцией из управляемого C ++ DLL я получаю System.BadImageFormatException, но если я отправляю жестко закодированный путь вместо того, чтобы позволить пользователю выбирать с помощью OpenFileDialog, тогда приложение работает нормально.
Когда я посмотрел вверх System.BadImageFormatException все, что я обнаружил, это то, что это относится к проблемам формата, но я работаю на 64-битной машине и скомпилировал все, включая формат c ++ dll в 64-битную, и я все еще получаю это исключение.
Есть ли известная проблема с 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...
}
}
Вы можете попытаться скомпилировать код в x86 точно, что означает, что вы собираетесь запускать приложение в 32-битном режиме.
Или же вы можете использовать тот же класс, завернутый в формы Windows.
System.Windows.Forms.OpenFileDialog
Других решений пока нет …