2010-09-27 5 views
0

Для начала я хотел бы сказать, что я не знаком с системой связывания Windows. (Большая часть моего опыта в программировании была приобретена в Mac OS, на которой радикальные различия между библиотеками и каркасом. Я тоже не очень люблю пользователя Windows.)FileNotFoundException пытается загрузить DLL из управляемого кода

Это моя установка: у меня есть два проекта в это же решение. Первый проект C++/CLI мы назовем Foo. Foo - это проект библиотеки, который зависит от внешней библиотеки (Java Runtime Environment) и, следовательно, имеет соответствующую ссылку на соответствующий (я считаю, поскольку он компилирует) .lib-файл. (Я не изменил никаких других параметров проекта, связанных с загрузкой этой библиотеки.) Мой другой проект, Bar - это исполняемый проект консоли C#, который ссылается на Foo.

Оба компилируются просто отлично.

Однако, когда я выполняю свою программу Bar.exe C#, она умирает перед построением первого объекта, который требует типов от Foo. Исключением является FileNotFoundException, в котором говорится, что сборка Foo.dll или одна из ее зависимостей не найдена.

Итак, я запустил fuslogvw, чтобы узнать, что пошло не так, но я действительно не понимаю, как это работает, и документация, которую я нашел на нем, весьма бесполезна. Из того, что, как я думаю, я понимаю, оба Foo и Bar не смогли загрузить как собственные изображения, но были найдены правильными ИЛ и были правильно загружены таким образом. Нет другого упоминания о неудаче, хотя, очевидно, это делает сбой в какой-то момент. Я бы опубликовал журналы, но они по-французски, и я думаю, что это будет бесполезно.

Любая идея?

ответ

1

Являются ли все исполняемые и dll-зависимостями в выходном каталоге? Сначала проверьте родные зависимости: Depends.

+0

DLL внешней библиотеки не находится в выходном каталоге, и Depends действительно сообщает, что он не смог его найти. Нужно ли мне копировать DLL там, или есть более элегантное решение? Развертывание этого проекта, скорее всего, произойдет только на машинах, на которых я буду иметь полный контроль. – zneak

+0

Это будет зависеть от того, как вы связываетесь с DLL, и, следовательно, как он загружается, что, вероятно, будет связано с порядком поиска DLL. Подробнее см. Http://msdn.microsoft.com/en-us/library/ms682586.aspx. –

+0

Итак, я сначала скопировал DLL в выходной каталог, чтобы убедиться, что он решает текущую проблему, а затем решит, что делать с развертыванием. –

Смежные вопросы