C # dll, что может быть вызвано? - PullRequest
2 голосов
/ 05 октября 2010

Вопрос: возможно ли написать C # dll, который можно вывести?

Я хочу написать заменяющую библиотеку для вызовов WinAPI WritePrivateProfileString и т. Д. Для чтения и записи ini-файлов.

Можно ли экспортировать функцию, например, 'WritePrivateProfileString', реализованный в C #, чтобы можно было вызвать dll с помощью DllImport?

Я хочу заменить собственную dll управляемой dll, поэтому управляемая dll вызывается вызовом pinvoke (вместо собственной dll, когда управляемая dll находится в каталоге bin).

Ответы [ 3 ]

7 голосов
/ 05 октября 2010

Вопреки распространенному мнению, возможно . (обратите внимание, что вам необходимо изменить вызывающее приложение для импорта из вашей DLL)
Смотри здесь .

Однако в вашем случае это не обязательно хорошая идея.
Почему бы вам не изменить объявления extern на обычные методы, которые вызывают ваши замены?

1 голос
/ 05 октября 2010

Это не легко, но это может быть сделано с использованием нескольких «хаков»

Однако COM может быть лучшим вариантом для вас, поскольку легко экспортировать com-объект из C # и использовать com-объекты из VB6. Затем измените объявления extern на обычные методы, которые вызывают вас Re ваши ком объекты.

0 голосов
/ 06 октября 2010

Попробуйте использовать Mono Cecil , чтобы заменить методы extern сторонней программы на методы, которые вызывают вашу DLL (без P / Invoke).

Здесь поможет рефлектор.

...