Witam,
Mam problem. Mam napisaną zewnętrzną bibliotekę (DLL) kilkunastu plikową w języku C. Jednak chcę ją wykorzystać w Windows Forms w Visual Studio 2017 w języku C#. Normalnie poprzez "Add reference" wyskakuje błąd. Dodałem ją po prostu do katalagu z debbagu, a do projektu jako zwyczajny plik (add -> existing item). Na moim komputerze to działa jednak na każdym innym wyskakuje błąd, że właśnie ta DLL jest nie wykrywana lub po prostu nie istnieje. Jak to rozwiązać?
Z góry dziękuję za pomoc
Są dwie drogi:
-
zaimportować w C# każdą funkcję za pomocą
DllImport
https://msdn.microsoft.com/en-us/library/system.runtime.interopservices.dllimportattribute(v=vs.110).aspx -
napisać bibliotekę dotnetową w C++/CLI jako “bridge” między biblioteką w C a programem w C# (w języku C++/CLI jest dostęp jednocześnie do funkcji natywnych C/C++ jak i dotnetowych C#).
Jedno i drugie jest dość skomplikowanym tematem i pełnym niuansów.
Pokaż może przykładowy nagłówek funkcji którą twoja DLL-ka eksportuje.
Jak napisał @Azarien z tym, że jeśli masz pliki .h to pierwszą część może być łatwiej wygenerować (np. http://swig.org/)
Temat do ewentualnego zamknięcia. Problem rozwiązałem wykorzystując DLLImport. Trzeba jednak pamiętać by skompilować program opcją 'Release', a nie 'Debbug'. Póki co wytestowałem program na trzech komputerach i działa. W wersji 'Debbug' nie działa, nie wiem dlaczego, ale już mnie to nie interesuje. Cel osiągnięty.
hydrant23 napisał(a):
Temat do ewentualnego zamknięcia. Problem rozwiązałem wykorzystując DLLImport. Trzeba jednak pamiętać by skompilować program opcją 'Release', a nie 'Debbug'. Póki co wytestowałem program na trzech komputerach i działa. W wersji 'Debbug' nie działa, nie wiem dlaczego, ale już mnie to nie interesuje.
A chyba powinno...