/ / C # dll, które można pinvoked? - c #, .net, pinvoke, dllimport

C # dll, które można pinvoked? - c #, .net, pinvoke, dllimport

Pytanie: Czy można napisać dll dll, które można pinvoked?

Chcę napisać bibliotekę zastępczą dla wywołań WinAPI WritePrivateProfileString itp. Do odczytu i zapisu plików ini.

Czy można wyeksportować funkcję, np. "WritePrivateProfileString", zaimplementowane w języku C #, aby można było wywołać dll za pomocą DllImport?

Chcę zamienić natywną bibliotekę dll na zarządzaną bibliotekę dll, aby zarządzana biblioteka dll została wywołana przez wywołanie pinvoke (zamiast natywnej biblioteki dll, gdy zarządzana biblioteka dll znajduje się w katalogu bin).

Odpowiedzi:

7 dla odpowiedzi № 1

Wbrew powszechnemu przekonaniu, że to jest możliwy. (pamiętaj, że będziesz musiał zmodyfikować aplikację wywołującą do importowania z biblioteki DLL)
Widzieć tutaj.

Jednak w twoim przypadku niekoniecznie jest to dobry pomysł.
Dlaczego nie zmieniasz extern deklaracje do normalnych metod, które nazywają się zamiennikami?


1 dla odpowiedzi nr 2

To nie jest łatwe, ale może być Gotowe z użyciem kilku "hacków"

Jednak COM może być lepszą opcją dla ciebie, ponieważ można łatwo wyeksportować obiekt com z C # i używać obiektów com z VB6. Następnie zmień deklaracje zewnętrzne na zwykłe metody, które nazywają cię twoimi obiektami com.


0 dla odpowiedzi № 3

Spróbuj użyć Mono Cecil aby zmienić program innej firmy extern metody do metod, które wywołują twoją bibliotekę DLL (bez P / Invoke).

Reflektor pomoże tutaj.