事实上,我得到了一个 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);
问题是,这将是一个可安装的项目,所以用户的文件夹将不会是相同的(例如: Pierre,Paul,Jack,Mom,dad,...)取决于计算机/会话在哪里运行。
所以我希望我的代码更通用一点,像这样:
/*
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”希望 DLL 的目录有一个“ const string”参数。
所以我的问题是: 在这种情况下可以做些什么?