Как я могу вызвать SetDllDirectory() до [DllImport]?

Я строю проект библиотеки.Net C#, который должен делать вызовы функции из DLL C++. C++ dll находится в папке "lib" в моем проекте. Поэтому я использую [DllImport]. Мне нужно перейти к DllImport путь к C++ DLL в папке lib. Я не хочу, чтобы это был жестко запрограммированный полный путь. Как я знаю, я могу вызвать SetDllDirectory("lib"), чтобы добавить мою папку lib для поиска. Но, если я не ошибаюсь, SetDllDirectory() должен быть вызван до [DllImport]. Подскажите, пожалуйста, откуда его можно вызвать? Если я сделаю это из статического конструктора, будет слишком поздно.

1 ответ

Решение

Библиотеки P/invoke загружаются по требованию при первом вызове метода a p/invoke. Итак, вам просто нужно убедиться, что вы звоните SetDllDirectory перед первым вызовом функции в вашей DLL.

Другие вопросы по тегам