__declspec( dllexport ) int MyFunction(int MyVal)
{
return MyVal;
}
код компилится с помощью Borland C++Builder 6 в MyDll.dll файл
Вызывать пробую так (предварительно скопировав MyDl.dll в bin\ папку VS проекта):
public class Container
{
[DllImport("MyDll.dll",CharSet=CharSet.Auto, SetLastError=true)]
public static extern int MyFunction(int a);
}
class Class1
{
[STAThread]
static void Main(string[] args)
{
int a=Container.MyFunction(5);
Console.WriteLine(a);
}
}
но на строке "int a=Container.MyFunction(5);" получаю Exception:
An unhandled exception of type 'System.DllNotFoundException' occurred in Test.exe
Additional information: Unable to load DLL (MyDll.dll).
Что можно попробовать сделать:
1) проверить, что dll действительно лежит в каталоге bin (по условию это вроде так, но всякое бывает )
2) depends mydll.dll и далее изучать, на что dll ссылается
А ты в References в своем проекте эту библиотеку добавил?
Re[2]: DllImportAttribute and DllNotFoundException
От:
Аноним
Дата:
27.07.04 09:20
Оценка:
Здравствуйте, Mab, Вы писали:
Mab>Что можно попробовать сделать: Mab>1) проверить, что dll действительно лежит в каталоге bin (по условию это вроде так, но всякое бывает ) Mab>2) depends mydll.dll и далее изучать, на что dll ссылается
файл MyDll.dll точно лежит в bin папке, проверял
а на счет зависимостей...
Исходный код включает в себя только
#include <windows.h>
#include <stdio.h>
....
усли Вы это имели в виду
Неужели никто так ни разу и не попробовал создать функцию на С а потом вызвать ее из С#?
Re[3]: DllImportAttribute and DllNotFoundException
А>усли Вы это имели в виду
Я имел в виду список импорта dll-ки. Так что выдает depends?
А>Неужели никто так ни разу и не попробовал создать функцию на С а потом вызвать ее из С#?
Пробовал Но не на BCB, мало ли что он с собой еще потащит...
Re[2]: DllImportAttribute and DllNotFoundException
А>Можно подробнее начиная с этого места?
"C:\Program Files\Microsoft Visual Studio .NET 2003\Common7\Tools\Bin\Depends.Exe" <your-dll-name>
Запускаем и смотрим, какие dll ей нужны и есть ли они в дефолтовом пути поиска.
Просто если dll не хочет грузиться, то значит должны быть причины на то.
Re[6]: DllImportAttribute and DllNotFoundException
От:
Аноним
Дата:
27.07.04 10:38
Оценка:
Здравствуйте, Mab, Вы писали:
Mab>Просто если dll не хочет грузиться, то значит должны быть причины на то.
В частности, в dll экспорт был _MyFunction, а не MyFunction.
2) Присланная dll не загружается через LoadLibrary. GetLastError дает ERROR_DLL_INIT_FAILED -- A dynamic link library (DLL) initialization routine failed. Так что это не pinvoke-specific issue.
Отчего такое происходит -- тебе виднее. Может __declspec(thread) где есть, а может просто DllMain чего не понравилось и она FALSE вернула
Re[2]: DllImportAttribute and DllNotFoundException