Ошибка при добавлении dll

When I add a .dll file as a reference in C# application it shows an error :

A reference to the «….dll» could not be added.Please make sure that
the file is accessible and that it is a valid assembly or COM
component.

ILDissassembler says there is no valid CLR header so I try to register it using regsvr32 and that gives me another error:

The module «» was loaded but the call to DLLRegisterServer failed with
error code ‘0x80004005’

I am using VS2010 ultimate version on a 64bit Windows 7 machine. What could be the problem?

Thanks for any hints/replies

osvein's user avatar

osvein

6252 gold badges10 silver badges31 bronze badges

asked Aug 11, 2010 at 8:50

user20358's user avatar

user20358user20358

14.2k36 gold badges115 silver badges186 bronze badges

The following worked for me:

Short answer

Run the following via command line (cmd):

TlbImp.exe cvextern.dll        //where cvextern.dll is your dll you want to fix.

And a valid dll will be created for you.

Longer answer

  • Open cmd

  • Find TlbImp.exe. Probably located in C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin. If you can’t find it go to your root folder (C:\ or D:) and run:

    dir tlbimp.exe /s              //this will locate the file.
    
  • Run tlbimp.exe and put your dll behind it. Example: If your dll is cvextern.dll. You can run:

    TlbImp.exe cvextern.dll
    
  • A new dll has been created in the same folder of tlbimp.exe. You can use that as reference in your project.

Manfred's user avatar

Manfred

5,3283 gold badges36 silver badges29 bronze badges

answered Sep 28, 2012 at 12:07

Memet Olsen's user avatar

11

You can add a DLL (or EXE) to a project only if it is a .NET assembly. If it’s not you will see this error message.

regsvr32 also makes certain assumptions about the structure and exported function in the DLL. It has been a while since I used it but it has to do with registering COM servers so certain entry points need to be available. If regsvr32 fails the DLL doesn’t provide those entry points and the DLL does not contain a COM component.

You only chance for using the DLL is to import it like any other non-.NET binary, e.g. when you use certain Win32 APIs. There is an old MSDN Magazine Article that might be helpful. See the following update for info where to get the article.

Update 12 March 2018: The link to the MSDN Magazine no longer works as it used to in August 2010. The article by Jason Clark is titled «.NET Column: Calling Win32 DLLs in C# with P/Invoke». It was published in the July 2010 issue of MSDN Magazine. The «Wayback Machine» has the article here at the moment (formatting is limited). The entire MSDN Magazine issue July 2010 is available here (HCM format only, instructions for how to use HCM files here).

answered Aug 11, 2010 at 8:59

Manfred's user avatar

ManfredManfred

5,3283 gold badges36 silver badges29 bronze badges

5

I used dependency walker to check out the internal references the dll was having. Turns out it was in need of the VB runtime msvbvm60.dll and since my dev box doesnt have that installed I was unable to register it using regsvr32

That seems to be the answer to my original question for now.

answered Aug 11, 2010 at 9:39

user20358's user avatar

user20358user20358

14.2k36 gold badges115 silver badges186 bronze badges

1

Make sure your compiler is set to x86 if you are trying to reference an x86 dll…

I was having similar issues… as mentioned above, trying to use OLEDB to access an Excel file from my C# code in Visual Studio 2012.

I kept getting errors about the Access library not being accessible but I knew that I had loaded it.

During Debug, it dawned on me that I am compiling for 64 bit but have Office x86 loaded. Even though I loaded the Access library for 32 bit, it was never being used by the app… and was, therefore, not accessible.

Here is what I was using in C#:

«Provider=Microsoft.ACE.OLEDB.12.0;Data Source=» + strFilePath + «;Extended Properties=’Excel 12.0 Xml;HDR=Yes'»;

…I was getting an error

As soon as I switched the compiler to x86 it worked

Olivier Jacot-Descombes's user avatar

answered Jan 27, 2014 at 0:28

Robert Obergfoll's user avatar

I just ran into that issue and after all the explanations about fixing it with command prompt I found that if you add it directly to the project you can then simply include the library on each page that it’s needed

answered Mar 3, 2015 at 20:33

JeffB's user avatar

JeffBJeffB

171 bronze badge

I have the same problem with importing WinSCard.dll in my project. I deal with that importing directly from dll like this:

[DllImport("winscard.dll")]
public static extern int SCardEstablishContext(int dwScope, int pvReserved1, int pvReserved2, ref int phContext);

[DllImport("winscard.dll")]
public static extern int SCardReleaseContext(int phContext);

You could add this to separate project and then add a reference from your main project.

answered Apr 12, 2016 at 7:10

Sashus's user avatar

SashusSashus

4117 silver badges8 bronze badges

I had this issue after my PC has been restarted during building the solution. My two references gone, so I had to rebuild my two projects manually and then I could add references without error.

answered Oct 20, 2016 at 9:55

Rafal Cypcer's user avatar

Rafal CypcerRafal Cypcer

5571 gold badge5 silver badges17 bronze badges

Normally in Visual Studio 2015 you should create the dll project as a C++ -> CLR project from Visual Studio’s templates, but you can technically enable it after the fact:

The critical property is called Common Language Runtime Support set in your project’s configuration. It’s found under Configuration Properties > General > Common Language Runtime Support.

When doing this, VS will probably not update the ‘Target .NET Framework’ option (like it should). You can manually add this by unloading your project, editing the your_project.xxproj file, and adding/updating the Target .NET framework Version XML tag.

For a sample, I suggest creating a new solution as a C++ CLR project and examining the XML there, perhaps even diffing it to make sure there’s nothing very important that’s out of the ordinary.

answered Jan 17, 2017 at 21:34

Aaron Hull's user avatar

Aaron HullAaron Hull

4224 silver badges16 bronze badges

You can not add a reference to a native DLL. However You can include them in the solution (right click solution, select «Add existing file»), but they will not be referenced unless you declare something like

[DllImport("...")]
public static extern void MyFunction();

Maybe there’s some kind of wrapper DLL, which you are actually referencing and which contains the DLL imports.

Sometimes, You may reference the wrapper DLL but still can not make your program running, where error prompt suggests you to ensure the file exists and all dependencies are available.

This problem is because the assembly you are trying to add is targeted and compiled only for a x86 or x64 processor architecture.

Just try change the Target Platform to x86 or x64 in Build -> Configuration Manager.

answered Jul 21, 2017 at 8:06

Leon Wolf's user avatar

Leon WolfLeon Wolf

1191 silver badge4 bronze badges

I needed to change architecture to x86 from x64 in configuration manager and copy my 32 bit dll (C language — pcProxAPI.dll) into new folder this created.. This is on top of the steps described by «Sashus» below.

C:\Projects..\bin\x86\Debug

answered Sep 26, 2017 at 19:13

boateng's user avatar

boatengboateng

91011 silver badges21 bronze badges

3

I had the same problem when I tried to add a dll I just coded in C++ to my new C# project. Turned out I needed to set properties of the C++ project my dll is from:

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

Because the C# project in which I wanted to use this dll was also set like that (had the same properties set to /clr).

answered Jul 30, 2018 at 15:16

LoukMouk's user avatar

LoukMoukLoukMouk

5039 silver badges29 bronze badges

2

I faced a similar problem. I was trying to add the reference of a .net 2.0 dll to a .Net 1.1 project. When I tried adding a previous version of the .dll which was complied in .Net 1.1. it worked for me.

answered Jul 26, 2013 at 14:23

user2623151's user avatar

I had this error while writing a Windows Service. I was running Visual Studio as Administrator so that my post build commands would automatically install my service. I noticed that when I closed everything and ran VS normally (Not as Administrator) it let me add the references just fine with no error.

Hope this solution works for you.

answered Dec 16, 2016 at 0:35

Fütemire's user avatar

FütemireFütemire

1,7151 gold badge26 silver badges21 bronze badges

My answer is a bit late, but as a quick test, make sure you are using the latest version of libraries.

In my case after updating a nuget library that was referencing another library causing the problem the problem disappeared.

answered Mar 17, 2018 at 15:27

Martin Staufcik's user avatar

Martin StaufcikMartin Staufcik

8,3774 gold badges44 silver badges64 bronze badges

You can add .dll file manually. For example if you want to add a dll file in your WPF application, and you are unable to refer it in your project

(Getting error :A reference to the «….dll» could not be added.Please make sure that the file is accessible and that it is a valid assembly or COM component) ,

then COPY that dll file and PASTE in the INSTALLER PROJECT (in application folder).

answered Mar 31, 2020 at 12:01

ARUN JOHN's user avatar

  1. start cmd.exe and type:
  2. Regsvr32 %dllpath%
  3. «%dllpath%» replace to your dll path

answered Apr 22, 2020 at 7:35

charles chen's user avatar

I had the same problem when I tried to add my own c++ dll to a c# (4.7.2) project

c++ project was compiled as x86 (win32)
c# was complied as x86

the solution was to compile the c++ as CLR

answered Feb 20, 2022 at 14:23

Amir Dar's user avatar

Содержание

  1. Причины некорректной работы DLL файлов
  2. Инструкция для решения ошибок dll
  3. Ошибки связанные c библиотеками DirectX
  4. Ошибки связанные c библиотеками Microsoft Visual C++
  5. DLL файлы удалены или устарели
  6. Загрузка dll с помощью командной строки
  7. Обновление причастного драйвера
  8. Проверка на вирусы
  9. Реестр поврежден?

Из-за несовместимости между программами и системой мы иногда сталкиваемся с ситуацией, когда ПО не может работать, а система сообщает, что отсутствует поддержка определенного DLL-файла. Почему программное обеспечение, которое хорошо работает под определенной версией системы, не может использовать другую? Есть ли какое-либо другое решение, кроме переустановки Windows? Что делать, если появляется сообщение о нехватке любого DLL? На данной странице вы узнаете, как быстро исправить эту ошибку.

При создании многих программ, из-за необходимости вызывать похожие или идентичные функции, разработчик проектирует части, которые являются относительно независимыми или могут совместно использоваться в качестве модуля во время разработки. Такие блоки упакованы в DLL-библиотеки динамической компоновки. Программа может вызывать несколько dll. И наоборот несколько программ могут совместно использовать один и тот же файл, что гораздо удобнее в управлении, и при этом сильно экономит ресурсы.

Файлы DLL, используемые многими программами, существуют в каталоге Windows или его подразделах. Это документы, которые поставляются с системой. Некоторые программы тоже устанавливают эти файлы в каталог ОС при их установке. Однако, когда ПО используется как лицензионное, то пользователи обычно не испытывают проблем.

У вас же могут быть разные случаи, например сам ДЛЛ был скопирован в неправильную директорию или при установке ПО не произвел замену с уже существующим в нужной системной папке.

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

  • Компоненты Windows не установлены:
    • DirectX;
    • Visual C.
  • DLL файлы удалены или устарели,
    • +способ по загрузке dll из командной строки.
  • Драйвера вашего ПК устарели или отсутствуют.
  • Вирусы могут помешать нормальной работе.
  • Реестр системы поврежден.

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

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

Инструкция для решения ошибок dll

Самым правильным методом будет скачивание и установка ПО заново вместе со всеми дополнительными компонентами указанными в системных требованиях. Будь то игра или же рабочая программная среда для её нормального запуска обычно требуются DirectX, Visual C.

Ошибки связанные c библиотеками DirectX

И так, когда Windows обнаружит ошибку, то система покажет уведомление с надписью:

Запуск программы не возможен, так как на компьютере отсутствует (название файла DLL). Попробуйте переустановить программу.

Ошибка DLL DirectX (d3dx9_43.dll) в Windows

В случаях, когда сам файл имеет название по типу следующих библиотек: d3dx9.dll, xinput1.dll, d3dx10.dll и т.д. (часто имена очень схожи и имеют буквы d и x перед расширением), то решение проблемы заключается в установке нужной версии DirectX, которую можно узнать в системных требованиях самой программы (рядом с системными требованиями пишут и версию Дирекса для корректной работы).

Ошибки связанные c библиотеками Microsoft Visual C++

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

Запуск программы не возможен, так как на компьютере отсутствует (название файла DLL). Попробуйте переустановить программу.

В названии файла фигурируют слова MSVC или RUNTIME.

Ошибка DLL Microsoft Visual C++ (MSVCP140.dll) в Windows

Исходя из данных системных требований приложения, определите какая именно версия библиотеки Visual C нужна и установите её.

DLL файлы удалены или устарели

Ради примера допустим, что при установке ПО вы не изменяли место, в котором будут храниться его файлы.

Система подскажет, какого файла не хватает. Воспользуйтесь функцией системного поиска (лупа в нижнем левом углу экрана), для розыска этого файла в используемой ОС, выберите из результатов документ с DLL расширением (имя должно совпадать с тем, которое указано в уведомлении об ошибке), находящегося в системном каталоге (часто это C:\Windows\System32). Скопируйте и переместите его в новую системную директорию, в зависимости от вашей ОС (пути указаны в пункте 2 данного алгоритма).

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

  1. Внимательно посмотрите на название ошибки. Это может быть:
    • unarc.dll
    • vcruntime140.dll
    • window.dll
    • windows.dll
    • msvcp140.dll
    • msvcp120.dll
    • msvcp100.dll
    • steam.dll
    • d3dx9.dll
    • xinput1.dll
    • steamapi64.dll
    • isdone.dll

Если в представленном списке нет нужно вам файла (имя.dll высвечивается в окне уведомления об ошибке сразу после слов «Запуск программы не возможен, так как на компьютере отсутствует…» — пример показан на скриншотах выше), то посетите базу DLL.

В поле «Поиск недостающих Dll файлов» введите имя, которое подсказала вам система например: unarc.dll и нажмите «Поиск DLL файлов».

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

Поиск dll файлов в базе

Пролистайте вниз и найдите кнопку «Скачать». При нажатии на вашем ПК в папке «Загрузки» , появится искомый документ, после чего переходите к следующему пункту.

Скачивание необходимого dll из базы

Мы советуем вам поместить файл в директорию программы, которая запрашивает данный документ. Убедитесь, что вы используете правильную разрядность ПО и ОС. Если ошибетесь с версиями, то возникнет ошибка 0xc000007b.

  1. После того, как вы определились с кодом ошибки
    • Скачайте недостающий файл DLL и переместите по пути C:\Windows\System32 или по вашему (если была изменена корневая папка).
    • Если копирование с заменой в «System32» не сработало, попробуйте переместить в системные директории (это зависит от версии ОС и от того, откуда приложение будет запрашивать библиотеки):
      • C:\Windows\System (Windows 95/98/Me);
      • C:\WINNT\System32 (Windows NT/2000);
      • C:\Windows\System32 (Windows XP, Vista, 7, 8, 8.1, 10).
      • C:\Windows\SysWOW64.

Папка System32 в Windows

Загрузка dll с помощью командной строки

  1. Если все таки не получается, то через командную строку от имени администратора введите:
  2. Если у вас Виндовс 32bit
    • regsvr32 (укажите имя недостающего файла).dll. Без скобок.
  3. Если у вас Виндовс 64bit
    • cd c:\windows\syswow64\
    • regsvr32 c:\windows\syswow64\(укажите имя недостающего файла).dll. Без скобок.

Запуск командной строки от имени администратора в Windows

Обновление причастного драйвера

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

  1. В левом нижнем углу экрана найдите значок лупы для осуществления поиска и в поле ввода напишите диспетчер устройств.
  2. Кликните Enter.
  3. В появившемся окне выберите оборудование, драйвер которого мешает корректной работе (в рассматриваемом случае это дисковод).
  4. Нажмите по его названию правой кнопкой мыши.
  5. В раскрывшемся меню выберите пункт обновить драйверы…

Обновляем драйвера в Windows

Проверка на вирусы

Если на данном этапе проблема до сих пор не решена, проверьте свой ПК на вирусы. Это необходимо для того, чтобы убедиться нет ли вредоносных файлов, которые маскируются под DLL.

Проверка на вирусы в Windows

Реестр поврежден?

Самое страшное, что может случится у обычного пользователя, это когда важная ветка реестра операционной системы повреждена. В этом случае даже если заменять DLL файлы на рабочие, скачанные вручную и закинутые в корневые папки по типу System32, каждый раз будут появляться новые уведомления со следующей ошибкой (т.е. скорее всего все DLL указанные в окнах ошибки нужно будет так же устанавливать самостоятельно, а их может быть очень много).

Devastar

3 / 3 / 0

Регистрация: 30.09.2012

Сообщений: 123

1

15.03.2013, 14:49. Показов 12815. Ответов 12

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

Привет Господа. Работаю в C# и столкнулся с такой проблемкой.
Создал DLLку через Delphi7. Собственно, вот сам код DLLки.

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
library Project1;
 
uses
  SysUtils,
  Classes;
 
function GetSimpleText(LangRus: Boolean): PChar; stdcall;
begin
  if (LangRus) then // Если LangRus = true 
    Result := PChar('Привет Мир!') // выполняется это действие
  else // если нетЮ то
    Result := PChar('Hello, world!'); // выполняется это действие
end;
 
exports GetSimpleText;
 
begin
end.

Подключаю его в C#, пишет:

Не удается добавить ссылку на «путь DLLки…\Project1.dll». Убедитесь, что файл доступен, и является допустимой сборкой или компонентом COM.

Вопрос. Каким образом я могу подключить и работать с посторонней библиотекой. написанная на Delphi7 ?

PS DLLка через Delphi7 выполняется нормально.



0



28 / 24 / 2

Регистрация: 11.12.2012

Сообщений: 448

15.03.2013, 14:53

2

А может из-за несовместимости кодов.



0



3 / 3 / 0

Регистрация: 30.09.2012

Сообщений: 123

15.03.2013, 15:01

 [ТС]

3

Euroman Хотите сказать, что DLLки написанные либо на Делфи, либо на других языках, нельзя подключить, и работать в C# из за несовместимости кода?



0



Winhttp22

168 / 131 / 29

Регистрация: 16.02.2013

Сообщений: 867

15.03.2013, 15:22

4

Взаимодействие с DLL
не?

Добавлено через 7 минут
как то так —

C#
1
2
[DllImport ("my.dll")]
public static extern IntPtr GetSimpleText(bool LangRus);



1



3 / 3 / 0

Регистрация: 30.09.2012

Сообщений: 123

15.03.2013, 15:23

 [ТС]

5

Winhttp22 Спасибо. Возможно, то что надо. Щас почитаю.



0



28 / 24 / 2

Регистрация: 11.12.2012

Сообщений: 448

15.03.2013, 15:27

6

Цитата
Сообщение от Devastar
Посмотреть сообщение

Euroman Хотите сказать, что DLLки написанные либо на Делфи, либо на других языках, нельзя подключить, и работать в C# из за несовместимости кода?

Я не знал, просто выдвинул версию



0



Devastar

3 / 3 / 0

Регистрация: 30.09.2012

Сообщений: 123

15.03.2013, 15:38

 [ТС]

7

Winhttp22 что то у меня не получается… Может я что то криво пишу ?

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
 
namespace DLLREAD
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        [DllImport("Project1.dll")]
        public static extern IntPtr GetSimpleText(bool LangRus);
 
        private void Form1_Load(object sender, EventArgs e)
        {
            GetSimpleText(true); // По идеи, должен выскочить MessageBox с надписью "Привет Мир!"
        }
    }
}

PS DLLка Project1.dll находится в папке с запускающим файлом если что.



0



168 / 131 / 29

Регистрация: 16.02.2013

Сообщений: 867

15.03.2013, 17:08

8

По идеи, должен выскочить MessageBox с надписью «Привет Мир!»

а где там MessageBox? функция возвращает указатель на первый элемент массива символов char, от этого и нужно плясать, чтобы получить строку. да и в шарп — не лучшее решение для работы с указателями ( хотя он поддерживает с ними работу), больше подходит си.
тут читай об указателях, чтобы понять , как они устроены, и как работают.
строка char имеет в конце символ «\0», что означает — конец строки. вот в си ты можешь в цикле получать каждый символ, и инкрементировать указатель на след. элемент массива, пока не получишь целую строку. как в шарп это будет — хз. можно записать, как и в си, но это наверное будет неправильное решение?



1



3 / 3 / 0

Регистрация: 30.09.2012

Сообщений: 123

15.03.2013, 17:45

 [ТС]

9

Winhttp22 Мне было бы интересно посмотреть на код СИ, как это будет выглядеть… =) Если честно, то я не ожидал что с Шарпом может быть такая фигня… во время Добавления ссылки… там куча компонентов и библиотек, и все открывает без проблем.и работает все по маслу… но там же тоже есть библиотеки наверное. которые написаны на Делфи) а вообще, мне что то кажется, что в самой ДЛЛке, надо что то прописывать, что бы Шарп воспринял его как COM компонент… и работал с ним как и со всеми ДЛЛками….



0



168 / 131 / 29

Регистрация: 16.02.2013

Сообщений: 867

15.03.2013, 19:11

10

Devastar, ну COM компонент — это таже самая длл, только импортируемые функции записаны в реестре. когда регистрируешь либу — в реестр пишутся функции, которые потом можешь вызывать ( как я понял, опыта разработки COM я не имел)

во время Добавления ссылки

натив библиотеки и .NET — отличаются. чем — сказать не могу, потому что читал уже давно, сейчас не припомню. вроде бы импортированные функции описаны в самой либе .NET, поэтому труда не составляет их вызывать , просто добавив ссылку на либу. с натив либами все по другому — нужно юзать dllimport.

но там же тоже есть библиотеки наверное. которые написаны на Делфи

да не этож фраймворк.



1



3 / 3 / 0

Регистрация: 30.09.2012

Сообщений: 123

15.03.2013, 19:59

 [ТС]

11

Winhttp22, значит через dllimport… нужно почитать да поюзать примерчики…

Ps. Спасибо



0



Winhttp22

168 / 131 / 29

Регистрация: 16.02.2013

Сообщений: 867

16.03.2013, 14:20

12

Winhttp22, значит через dllimport..

ага

нужно почитать да поюзать примерчики…

вот примерчик написал, и заодно ознакомился с классом Marshal

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
namespace ConsoleApplication6 
{ 
public class PleaseSayHelloMan 
{ 
      static void Main(string[] args) { 
        IntPtr i=GetSimpleText(true);
        Console.WriteLine(Marshal.PtrToStringAnsi(i));
        Console.ReadKey();
}
    [DllImport(@"C:\*******\SharpDevelop Projects\qwe\qwe\bin\Debug\Project2.dll")]// полностью путь надо писать к либе
    public static extern IntPtr GetSimpleText(bool LangRus);}
    
 
}

возвращает строку ‘Привет Мир!’



1



3 / 3 / 0

Регистрация: 30.09.2012

Сообщений: 123

23.03.2013, 22:43

 [ТС]

13

Winhttp22 Вообще Красавчик!!! Благодарю! Спасибо Большое!



0



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

Подобные проблемы встречаются очень часто, в том числе они могут проявляться и при использовании кого-либо программного обеспечения, работа которого так или иначе, но связана с функционалом упомянутых динамических библиотек.

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

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

Стоит отметить, что далеко не всегда даже успешная регистрация файла динамической библиотеки ещё не гарантирует успешное решение ошибки, и вот почему:

  • Большинство файлов dll, предлагаемые пользователю для скачивания являются лишь «пустышками», которые не несут абсолютно никакой пользы. Также необходимо понимать, что такой «популярностью» ошибок с динамическими библиотеками иногда пользуются люди, которые в достаточно напряжённых отношениях с законом.
    Поэтому, перед тем как скачать и поместить файл в системный каталог следует несколько раз подумать и проверить не несёт ли в себе полученный «dll» вредоносного программного обеспечения.
  • Даже, если скаченный файл соответствует требованиям и действительно несёт в себе корректный функционал, это ещё не говорит о том, что его регистрация в принципе возможна, так как не все файлы динамической библиотеки поддерживают функцию «DllRegisterServer», а именно она и отвечает за рассматриваемые в настоящей статье действия.

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

Способ 1

Перед тем, как переходить к непосредственному осуществлению регистрационного процесса необходимо отметить, что при использовании операционной системы Windows 64-битной разрядности создаётся два различных варианта «regsvr32.exe», с применением которого и связана вся последующая работа.

Один находиться в «C:\Windows\SysWOW64», второй в «C:\Windows\System32», и при этом 64-битная версия располагается именно в «System32».

Последующие действия заключаются в следующем:

  • Нажмите комбинацию клавиш «WIN+R» для открытия пункта «Выполнить»;
  • В открывшееся окно введите команду «regsvr32.exe путь_к_файлу_dll».Регистрация dll в Windows
    Путь, к ранее помещённому в системный каталог файлу dll следует указывать полностью, дабы предотвратить ошибку с путаницей используемого из двух варианта, которые были упомянуты выше.

Если всё прошло корректно, то в ответ на выполнение команды вам будет предоставлено уведомление об успешной регистрации файла dll.Успешная регистрации dll

Способ 2

Способ 3

Третий способ наиболее прост и, возможно, лучшим образом подойдёт для начинающих пользователей, а именно:

  • Откройте каталог, куда ранее был помещён, скаченный вами файл dll;
  • Найдите его и кликните по нему правой кнопкой мышки;
  • Нажмите «Открыть с помощью» и выберите «Найти другую программу на этом компьютере»;
  • Откройте путь «C:\Windows\SysWOW64» или «C:\Windows\System32» и выберите файл «regsvr32.exe». Как зарегистрировать dll с помощью проводника

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

Заключение

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

  1. Найдите информацию о том, какой именно функционал выполняется проблемным файлом, и посмотрите с какими системными компонентами он поставляется. Например, файлы, начинающиеся с «d3d», идут в комплекте с «DirectX», который доступен для скачивания на официальном сайте «Microsoft».
  2. В большинстве случаев, пиратские версии программного обеспечения и игр поставляются с собственными файлами динамической библиотеки, которые необходимы для их работы.
    Данное обстоятельство приводит к тому, что файл с расширением «exe» обращается не к копии, которая находится в системном каталоге, а к собственному варианту, что и вызывает ошибку.
    Следовательно, для её исправления потребуется просто удалить «несанкционированную копию» из папки с используемым программным продуктом.

Вам так же будет интересно:

  • Лучшие бесплатные программы для Windows 10 (Офисные пакеты, Фоторедакторы, Видеоредакторы)
  • Бесплатные программы для Windows 10 (очистка и оптимизация ПК, антивирусы, программы для работы с почтой)
  • Отсутствует драйвер для сети windows 10 как исправить?
  • Какие службы можно отключить в windows 7 для лучшего быстродействия?
  • Почему долго загружается компьютер при включении на виндовс 7/10?
  • Как повысить скорость обмена данными с жестким диском на windows
  • Как проверить оперативную память в windows 10

Понравилась статья? Поделить с друзьями:
  • Ошибка при завершении работы компьютера
  • Ошибка при добавлении устройства блютуз
  • Ошибка при входе на сервер aternos
  • Ошибка при входе на сайт через стим
  • Ошибка при добавлении сервера условной пересылки