Как вызвать native C++ DLL из ASP.NET (C#) кода?
????????: ? ????? ????? ?????? ???????????? DLLImport ? P/Invoke. ?? ??? ????? ?????, ????? DLL ????? ?????????. ??? ?????????? ?????????, ?????? ??????? DLL ? ??? ?? ???????, ??? ? ???? ?????????, ? ????? ?????. ?? ? ASP.NET ??? ?? ????????, ????????? ??? ??????????? ??????? ??? (?????? ???????? ??? - ?? ???? ?????? ???? DLL ?? ?????? ?? ???????, ?? ? ???????). ?????? ?????????? ????? ????? Windows/System32 -- ?????? ?????? ???. ? ??? ??????? ????????? ????? ??? ??? ?? ????? ????? DLL ? ????????.
???????: ??????-?? ????? ??? ????????? ???? ?????????, ??. ????????, ?????, ? ????????? ???? ?????????? ??????????? ????????? ????? ????? reflection, ???????? ? ???? ?????????? path/??????? (??. ?????). ??????, ??? ???? ?????. ?????? ????????? ???? DLL ????? LoadLibrary ????? ?????? ???????, ??????? ?? ??????????. ????? ?? ????? ?? ??????, ???? ??? ??? ???? ? ??????.
????????? ???? (C#):
?????????? LoadLibrary:
[DllImport("kernel32.dll")]
public static extern IntPtr LoadLibrary(string lpFileName);[DllImport("kernel32.dll")]
public static extern IntPtr FreeLibrary(IntPtr library);
?????????? ????? ??????? ? C++ DLL:
[DllImport("SampleLib.dll", PreserveSig = true, CharSet = CharSet.Unicode)]
public static extern UInt32 DoStuff(...???? ?????????...);
???????? ??????????:
String DLLPath;
DLLPath = ...?????? ??????? ? ????? DLL...
IntPtr lib = LoadLibrary(DLLPath);
... ??????, ???? lib ????? ????, ?? ?????????, ???, ?? ??????????...
? ?????? ????? ????????:
UInt32 res = DoStuff(...);
? ??????????, ??????? ?????????? ??????????:
FreeLibrary(lib); // ????? ????????? HRESULT, ???? ???????
Comments
Anonymous
January 01, 2003
Здравствуйте, Эльдар! У меня есть стойкое желание написать программу на C# с использованием функций экспортируемыхAnonymous
January 01, 2003
No need to assign. Declaration does that. And if "ne zamorachivat'sya", it won't be called because DoStuff lives in a DLL with unknown dynamically defined location. .Net cannot automatically load it because it does not know from where. Pardon for English, writing this under Win7 Beta without Russian keyboard.Anonymous
January 01, 2003
Только что мне подсказали, что есть проблема с комментариями. И правда, на последний пост вообще даже на страницу с комментариями не попасть...Anonymous
March 17, 2009
Самого главного то нету. Как присвоить адрес к вызываемой функции. А так можно было не заморачиваться и сразу вызвать DoStuff