Как я могу указать путь [DllImport] во время выполнения?

Фактически, у меня есть C ++ (рабочая) DLL, которую я хочу импортировать в мой проект C # для вызова его функций.

Он работает, когда я указываю полный путь к DLL, например:

string str = "C:\\Users\\userName\\AppData\\Local\\myLibFolder\\myDLL.dll";
[DllImport(str, CallingConvention = CallingConvention.Cdecl)]
public static extern int DLLFunction(int Number1, int Number2);

Проблема в том, что это будет устанавливаемый проект, поэтому папка пользователя не будет такой же (например: Пьер, Пол, Джек, мама, папа, ...) в зависимости от компьютера / сеанса, на котором он будет запущен.

Так что я бы хотел, чтобы мой код был немного более общим, например:

/* 
goes right to the temp folder of the user 
    "C:\\Users\\userName\\AppData\\Local\\temp"
then go to parent folder
    "C:\\Users\\userName\\AppData\\Local"
and finally go to the DLL's folder
    "C:\\Users\\userName\\AppData\\Local\\temp\\myLibFolder"
*/

string str = Path.GetTempPath() + "..\\myLibFolder\\myDLL.dll"; 
[DllImport(str, CallingConvention = CallingConvention.Cdecl)]
public static extern int DLLFunction(int Number1, int Number2);

Главное, что "DllImport" хочет параметр "const string" для каталога DLL.

Так что мой вопрос: Что можно сделать в этом случае?

129
задан Jsncrdnl 16 January 2012 в 09:52
поделиться