ошибка во время выполнения при вызове C ++ dll из приложения Windows C # .NET - PullRequest
2 голосов
/ 07 июня 2010

У меня было приложение C # .NET для Windows с пользовательским интерфейсом C #, и весь код, выполняемый для обработки, вызывается C ++ dll (проект библиотеки классов C ++), который добавляется как ссылка на проект C #.

Однако недавно, когда я отформатировал свой компьютер и снова попытался запустить свой проект, для которого было выполнено резервное копирование, в Visual Studio 2005 было сделано следующее исключение:


Необработанное исключение типа 'System.IO..FileNotFoundException 'произошло в System.Windows.Forms.dll

Дополнительная информация: Указанный модуль не найден.(Исключение из HRESULT: 0x8007007E)


Это исключение возникает, когда я помещаю следующий код (например) в событие нажатия кнопки.

    private void button3_Click(object sender, EventArgs e)
    {
        CyclopiaDll.Class1 cc = new CyclopiaDll.Class1(); // calling dll 
        cc.clearData();            
    }

Однакофактически показано, что исключение выдается в этой строке, даже если форма загружается без проблем:

  Application.Run(new Form1());

Я попытался создать новый проект и снова добавить упомянутую dll, но я все еще получаю исключение.Это случилось со мной и раньше, когда я пытался запустить этот проект на другом компьютере.Однако после того, как моя машина была отформатирована, я даже не могу запустить приложение.

Единственный способ решить эту проблему - воссоздать проект с нуля, как и раньше.что требует много времени.

Есть ли способ избежать этой проблемы, чтобы я мог запустить этот проект на своем компьютере, а также на другом компьютере?

Ответы [ 2 ]

3 голосов
/ 07 июня 2010

Похоже, у вас отсутствует зависимость, то есть еще одна библиотека DLL, от которой зависит ваша библиотека C ++, которая отсутствует на вашем компьютере.

Вы можете использовать утилиту типа "Зависимость Уокер" для загрузки вашей библиотеки C ++.на машине, где у вас есть проблема, и она укажет на любые недостающие зависимости.Затем необходимо выяснить, что это за зависимость (например, отсутствует версия времени выполнения C ++), а затем убедиться, что она упакована вместе с вашим приложением, либо напрямую, либо через модуль слияния, если это необходимо, например.

Зависимость Ходокhttp://www.dependencywalker.com/

1 голос
/ 07 июня 2010

Похоже, что компилятор не помещает указанную dll в выходную папку.Я бы просто положил его туда вручную.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...