[DLL] ladowanie z systemu

[DLL] ladowanie z systemu
JU
  • Rejestracja:około 16 lat
  • Ostatnio:ponad 13 lat
0

W momencie gdy dodaje do projektu przez Add Reference (Visual Studio 2010) dwie biblioteki z windows/system32 (chodzi konkretnie o: FirewallAPI.dll oraz hnetcfg.dll) w katalogu projektu (oraz w samym projekcie w sekcji References) pojawiaja sie trzy zupelnie inne biblioteki: Interop.NATUPNPLib.dll, Interop.NETCONLib.dll oraz Interop.NetFwTypeLib.dll. Bibliotek tych nie ma w system32 (zakladam ze sie w jakis magiczny sposob utworzyly na podstawie tych dwoch ktore wczytalem na poczatki).

Moj problem polega na tym, ze chcialbym zeby projekt korzystal de facto z bibliotek ktore ma w OSie, zeby nie bylo potrzeby dostarczania tych 3 Interop.*.dll wraz z aplikacja.

Spotkal sie kiedys ktos z czyms takim?? :P

Azarien
  • Rejestracja:ponad 21 lat
  • Ostatnio:2 minuty
0

Przez Add Reference dodajemy dll-ki .Netowe, nie trzeba tak dodawać bibliotek natywnych.

JU
  • Rejestracja:około 16 lat
  • Ostatnio:ponad 13 lat
0

to w takim razie jak zaladowac biblioteki natywne?

somekind
Moderator
  • Rejestracja:około 17 lat
  • Ostatnio:około 13 godzin
  • Lokalizacja:Wrocław
0

Nie ładować wcale.
W klasie rejestrujesz metody extern poprzez atrybut DllImport i używasz ich później jak normalnych metod.

http://msdn.microsoft.com/en-us/library/e59b22c5.aspx
http://msdn.microsoft.com/en-us/library/aa288468%28v=vs.71%29.aspx

edytowany 1x, ostatnio: somekind
OT
  • Rejestracja:ponad 20 lat
  • Ostatnio:ponad 11 lat
0

A może mu chodzi o COM?

JU
  • Rejestracja:około 16 lat
  • Ostatnio:ponad 13 lat
0

no wlasnie, z tego co sie zorientowalem to sa biblioteki COM, i ich sie niestety nie laduje z DLLImport tylko chyba przez reflections czy cos takiego...

somekind
Moderator
  • Rejestracja:około 17 lat
  • Ostatnio:około 13 godzin
  • Lokalizacja:Wrocław
0

COM? To ten syf, co się go do syfiastego GACa wrzuca, a potem korzysta nie pamiętam jak?

JU
  • Rejestracja:około 16 lat
  • Ostatnio:ponad 13 lat
0

bardzo mozliwe...ktos bylby w stanie powiedziec jak to dynamicznie zaladowac?

OT
  • Rejestracja:ponad 20 lat
  • Ostatnio:ponad 11 lat
0
somekind napisał(a)

COM? To ten syf, co się go do syfiastego GACa wrzuca, a potem korzysta nie pamiętam jak?

No przeciez referencji do natywnej dll-ki by nie dodał - to pewnie był COM i pewnie mu wygenerowało jakieś proxy do COM? Co prawda nie testowałem w VS 2010 ale nie sądzę żeby było tak dobrze że generuje coś z natywnych dll-lek - tam musiał być interfejs com, a próba dodania dll-ki natywnej powinna skończyć się błędem.

No chyba że VS 2010 coś zmienił tutaj, ale jakoś w to wątpię.

A jeżeli to interfejs COM, to o ile się nie mylę trzeba właśnie dodać jako referencję i powinien automatycznie wygenerować proxy, przez które da się "dobrać" do metod coma (to te pliki Interop.). Ale po co trzymać to w gac? NIe sądzę że jest to konieczne

edytowany 1x, ostatnio: othello
somekind
Nie wiem, tak strzelałem. Akurat na obsłudze COMów się nie znam, skojarzyło mi się tylko z GACem.
JU
  • Rejestracja:około 16 lat
  • Ostatnio:ponad 13 lat
0

:) ciesze sie ze sie rozumiemy, jednakze nadal nie otrzymalem odpowiedzi na pytanie, w jaki sposob moge korzystac z tych metod bez rozpowszechniania mojej aplikacji z tymi Interop'ami (jesli mozne je jakos wkompilowac to nie ma problemu, mi po prostu zalezy na tym zeby cala aplikacja to byl pojedynczy plik)

RE
Moderator
  • Rejestracja:około 18 lat
  • Ostatnio:około rok
0
OT
  • Rejestracja:ponad 20 lat
  • Ostatnio:ponad 11 lat
0

A może taki głupi sposób: przelecieć te pliki Interop Reflectorem i wyciągnięty z nich kod wkleić do projektu? Teoretycznie mogłoby zadziałać

Azarien
  • Rejestracja:ponad 21 lat
  • Ostatnio:2 minuty
0

Da się je połączyć w jedno assembly:
Czasem się da, czasem się nie da. Ruletka.

RE
Dlaczego ma się nie udać?
Azarien
DLL-ek „mixed-mode”, zawierających mieszaninę kodu CLR i natywnego nie da się potraktować ilmerge'em. A tego typu DLL-e generuje C++/CLI. Biblioteki pisane w C# powinno się dać.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.