Visual studio не видит dll

Обновлено: 01.07.2024

ссылка ". dll " не удалось добавить.Пожалуйста, убедитесь, что файл доступен и является допустимой сборкой или COM деталь.

ILDissassembler говорит, что нет допустимого заголовка CLR, поэтому я пытаюсь зарегистрировать его с помощью regsvr32, и это дает мне еще одну ошибку:

модуль "" был загружен, но вызов DLLRegisterServer не удалось код ошибки 0x80004005 при'

Я использую версию VS2010 ultimate на 64-битной машине Windows 7. В чем может быть проблема?

Спасибо за любые советы/ответы

для меня сработало следующее:

короткий ответ:

выполните следующие действия через командную строку (cmd):

и для вас будет создана допустимая dll.

более длинный ответ

Найти TlbImp.исполняемый. Вероятно, находится в C:\Program файлы (x86)\Microsoft SDKs\Windows\v7.0A\Bin. Если вы не можете найти его, перейдите в корневую папку (C:\ или D:) и беги:

запустить программу tlbimp.exe и поместите свою dll за него. Пример: если ваша dll является cvextern.файл DLL. Вы можете запустить:

regsvr32 также делает определенные предположения о структуре и экспортируемой функции в DLL. Прошло некоторое время с тех пор, как я использовал его, но это связано с регистрацией COM-серверов, поэтому определенные точки входа должны быть доступны. Если regsvr32 терпит неудачу, DLL не предоставляет эти точки входа, а DLL не содержит com-компонент.

Я использовал dependency walker для проверки внутренних ссылок, которые имела dll. Оказывается, он нуждался в среде выполнения VB msvbvm60.dll и так как мой dev box не установлен, я не смог зарегистрировать его с помощью regsvr32

Это, кажется, ответ на мой первоначальный вопрос сейчас.

убедитесь, что ваш компилятор установлен в x86, если вы пытаетесь ссылаться на x86 dll.

Я продолжал получать ошибки о том, что библиотека Access недоступна, но я знал, что загрузил ее.

во время отладки меня осенило, что я компилирую для 64 бит, но загрузил Office x86. Хотя я загрузил Доступ к библиотеке для 32 бит, он никогда не использовался приложением. и поэтому был недоступен.

"Поставщик=Microsoft.ТУЗ.Oledb для.12.0; источник данных= " + strFilePath +"; расширенные свойства='Excel 12.0 Xml; HDR=Yes'";

Как только я переключил компилятор для x86 он работал

Я просто столкнулся с этой проблемой, и после всех объяснений о ее исправлении с помощью командной строки я обнаружил, что если вы добавите ее непосредственно в проект, вы можете просто включить библиотеку на каждой странице, что это необходимо

У меня такая же проблема с импортом WinSCard.dll в моем проекте. Я имею дело с этим импортом непосредственно из dll, как это:

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

вы не можете добавить ссылку на уроженца DLL. Однако вы можете включить их в решение (щелкните правой кнопкой мыши решение, выберите "Добавить существующий файл"), но они не будут ссылаться, если вы не объявите что-то вроде

может быть, есть какой-то фантик DLL, на которую вы фактически ссылаетесь и которая содержит импорт DLL.

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

эта проблема заключается в том, что сборка, которую вы пытаетесь добавить, является целевой и компилируется только для x86 или х64 архитектура процессора.

просто попробуйте изменить целевую платформу на x86 или х64 на построить ->Configuration Manager.

для тех, кто ищет помощь по этому вопросу, или испытывает FileNotFoundException или FirstChanceException, проверьте мой ответ здесь:

В общем, вы должны быть абсолютно уверены, что вы отвечаете всем требованиям для создания ссылки - я знаю, что это очевидный ответ, но вы, вероятно, упускаете из виду относительно простое требование.

У меня была эта проблема после того, как мой компьютер был перезагружен во время построения решения. Мои две ссылки исчезли, поэтому мне пришлось перестроить два моих проекта вручную, а затем я мог добавить ссылки без ошибок.

У меня была эта ошибка при записи службы Windows. Я запускал Visual Studio как администратор, чтобы мои команды сборки post автоматически устанавливали мою службу. Я заметил, что когда я закрыл все и запустил VS нормально (не как администратор), это позволило мне добавить ссылки просто отлично без ошибок.

надеюсь, что это решение работает для вас.

обычно в Visual Studio 2015 вы должны создать проект dll как проект C++ -> CLR из шаблонов Visual Studio, но вы можете технически включить его после того, как факт:

критическое свойство называется Common Language Runtime Support в настройках Вашего проекта. Он найден под Configuration Properties > General > Common Language Runtime Support .

для примера я предлагаю создать новое решение в качестве проекта C++ CLR и изучить XML там, возможно, даже дифференцировать его, чтобы убедиться, что нет ничего очень важного, что выходит за рамки обычного.

Мне нужно было изменить архитектуру на x86 из x64 в configuration manager и скопировать мою 32 - битную dll (язык C-pcProxAPI.dll) в новую папку, созданную этим.. Это на верхних ступенях лестницы, описанный "Sashus" ниже.

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

в моем случае после обновления библиотеки nuget, которая ссылалась на другую библиотеку, вызывающую проблему, проблема исчезла.

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

  • Configuration Properties\General\Common Language Runtime Support: /clr
  • Configuration Properties\C/C++\General\Common Language RunTime Support: /clr

потому что проект, в котором я хотел использовать эту dll, также был установлен так (имел те же свойства, что и /clr ).

Итак, сегодня, когда хотел открыть .RC файл (файл с ресурсами) в Visual Studio 2017 я столкнулся с такой ошибкой: "Не удается найти dll библиотеку компилятора ресурсов" (или "Cannot find the resource compiler DLL.", по-интернациональному). Введя эту ошибку в кавычках я обнаружил, что в российском интернете такой фразы вообще не встречается (ну, либо она слишком глубоко зарыта), и решил по-быстрому выложить решение на русском языке.

Итак, как Вы, наверное, поняли, проблема в том, что Вася не может найти библиотеку по пути, указанном в реестре.

Есть 3 способа решить данную проблему:

1) (Это сделал я), просто найти на компе через поиск в проводнике два файла: rcdll.dll и rc.exe (они должны находиться в одной папке) и скопировать их в ту папку, в которой Студия эти файлы ищет.

В моём случае VS искал библиотеку в папке " C:\Program Files (x86)\Windows Kits\10\bin\x86 ", а лежали они в каталоге " C:\Program Files (x86)\Windows Kits\10\bin\10.0.15063.0\x86 "

АХТУНГ! Если Visual Studio ищет файлы в папке х86 , копируйте туда нужные файлы ИМЕННО ИЗ х86 , а в папку х64 ТОЛЬКО файлы из папки х64 . Ну и, соответственно, в папку arm копировать только файлы из arm , а в arm64 - из arm64 (я не знаю, обязательно ли именно так, не проверял, но лучше не экспериментируйте).

2) Установить Windows 8.1 API: запустить Visual Studio Installer --> Нажать кнопку "Изменить" ("Modify") --> Развернуть список с установленными дополнениями С++ --> установить там галочку в пункте "Windows 8.1 SDK" --> Нажать "Применить" ("Modify"). Таким образом установиться Windows 8.1 SDK. Все записи в реестре должны отредактироваться автоматически.

3) Если этого не произошло, или Windows 8.1 SDK уже установлен, можно открыть редактор реестра и отредактировать ключи, указывающие Студии, где брать эти библиотеки. Ключи находятся в реестре по пути:

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Microsoft SDKs\Windows\*версия винды*

Кликаем по версии винды и видим несколько ключей. Нужно поменять значение ключа "InstallationFolder".

Меняем его на тот путь, в котором находятся папки " arm ", " arm64 ", " x86 " и " x64 " с файлами " rcdll.dll " и " rc.exe " внутри. (нужно найти эти файлы через поиск в проводнике)

К примеру, у меня это: " C:\Program Files (x86)\Windows Kits\10\bin\10.0.15063.0\ "

Если в ветке " HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Microsoft SDKs\Windows " несколько веток с версией винды, меняете ключ "InstallationFolder" в той, чьё название имела папка, на отсутствие файлов в которой Студия жаловалась. К примеру, моя студия искала файлы в " C:\Program Files (x86)\Windows Kits\ 10 \ ", и поменял я значение ключа "InstallationFolder" в ветке " v10.0 ".

Если ваше приложение пытается использовать неработающую ссылку, создается ошибка исключения. Неспособность найти компонент, на который указывает ссылка, является явным признаком ошибки, однако есть несколько ситуаций, в которых ссылка считается нерабочей. Эти варианты показаны в приведенном ниже списке:

Неверный или неполный путь для ссылок проекта.

Файл, на который указывает ссылка, удален.

Файл, на который указывает ссылка, переименован.

Сбой подключения к сети или проверки подлинности.

Ссылка указывает на COM-компонент, который не установлен на данном компьютере.

Ниже приведены способы устранения этих проблем.

Ссылки на файлы в сборках задаются по абсолютным путям в файле проекта. Таким образом, в локальном окружении пользователей, работающих с несколькими разработчиками, может отсутствовать сборка, на которую указывает ссылка. Чтобы избежать этих ошибок, в таких случаях лучше добавлять ссылки между проектами. Дополнительные сведения см. в разделе Программирование с использованием сборок.

Неправильный путь для ссылок

Если проекты используются совместно на разных компьютерах, некоторые ссылки могут быть не найдены, если компонент находится на этих компьютерах в разных папках. Ссылки сохраняются под именем файла компонента (например, MyComponent). Когда в проект добавляется ссылка, расположение папки для файла компонента (например, C:\MyComponents) добавляется к свойству проекта ReferencePath.

Чтобы устранить эту проблему, можно удалить неработающую ссылку и заменить в диалоговом окне Добавление ссылки. Другое решение заключается в том, чтобы использовать элемент Путь для ссылок на страницах свойств проекта и изменить папки в списке, указав правильное расположение. Свойство Путь для ссылок сохраняется для каждого пользователя на каждом компьютере. Таким образом, изменение пути для ссылок не затрагивает других пользователей проекта.

Ссылки между проектами лишены подобных проблем. Поэтому по мере возможности следует использовать их вместо ссылок на файлы.

Исправление неработающей ссылки проекта с помощью исправления пути для ссылок

В обозревателе решений щелкните правой кнопкой мыши узел проекта и выберите пункт Свойства.

Открывается конструктор проектов.

Если вы используете Visual Basic, выберите страницу Ссылки и нажмите кнопку Пути для ссылок. В диалоговом окне Пути для ссылок введите путь к папке с элементом, на который нужно сослаться, в поле Папка, а затем нажмите кнопку Добавить папку.

Файл, на который указывает ссылка, удален.

Вполне возможно, что файл, на который указывает ссылка, был удален и больше не существует на диске.

Исправление неработающей ссылки проекта для файла, который больше не существует на диске

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

Файл, на который указывает ссылка, переименован.

Файл, на который указывает ссылка, мог быть переименован.

Исправление неработающей ссылки, указывающую на переименованный файл

Удалите ссылку, а затем добавьте ссылку на переименованный файл.

Если ссылка находится в другом расположении на компьютере, нужно считать ее оттуда.

Сбой подключения к сети или проверки подлинности

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

На компьютере не установлен COM-компонент.

В качестве примера мы рассмотрим подключение библиотеки SDL к нашему проекту в Visual Studio 2017 (работать будет и с более новыми версиями Visual Studio).

Шаг №1: Создаем папку для хранения библиотеки

Создаем папку Libs на диске C ( C:\Libs ).

Шаг №2: Скачиваем и устанавливаем библиотеку



Шаг №3: Указываем путь к заголовочным файлам библиотеки

Открываем свой любой проект в Visual Studio или создаем новый, переходим в "Обозреватель решений" > кликаем правой кнопкой мыши (ПКМ) по названию нашего проекта > "Свойства" :


В "Свойства конфигурации" ищем вкладку "С/С++" > "Общие" . Затем выбираем пункт "Дополнительные каталоги включаемых файлов" > нажимаем на стрелочку в конце > "Изменить" :


В появившемся окне кликаем на иконку с изображением папки, а затем на появившееся троеточие:


Заголовочные файлы находятся в папке include внутри нашей библиотеки, поэтому переходим в нее ( C:\Libs\SDL2-2.0.9\include ) и нажимаем "Выбор папки" , а затем "ОК" :



Шаг №4: Указываем путь к файлам с реализацией библиотеки

Переходим на вкладку "Компоновщик" > "Общие" . Ищем пункт "Дополнительные каталоги библиотек" > нажимаем на стрелочку в конце > "Изменить" :


Опять же, нажимаем на иконку с папкой, а затем на появившееся троеточие. Нам нужно указать следующий путь: C:\Libs\SDL2-2.0.9\lib\x86 . Будьте внимательны, в папке lib находятся две папки: x64 и x86 . Даже если у вас Windows разрядности x64, указывать нужно папку x86 . Затем "Выбор папки" и "ОК" :


После этого переходим в "Компоновщик" > "Ввод" . Затем "Дополнительные зависимости" > нажимаем на стрелочку в конце > "Изменить" :


В появившемся текстовом блоке вставляем:


Затем переходим в "Компоновщик" > "Система" . После этого "Подсистема" > нажимаем на стрелочку вниз > выбираем "Консоль (/SUBSYSTEM:CONSOLE)" > "Применить" > "ОК" :



Шаг №5: Копируем dll-ку в папку с проектом

Переходим в папку x86 ( C:\Libs\SDL2-2.0.9\lib\x86 ), копируем SDL2.dll и вставляем в папку с вашим проектом в Visual Studio. Чтобы просмотреть папку вашего проекта в Visual Studio, нажмите ПКМ по названию вашего проекта > "Открыть содержащую папку" :


Затем вставляем скопированный файл (SDL2.dll) в папку с проектом (где находится рабочий файл .cpp):


Шаг №6: Тестируем

Теперь, чтобы проверить, всё ли верно мы сделали — копируем и запускаем следующий код:

Читайте также: