lm68140318 发表于 2023-5-16 10:53:23

MFC-当前文件夹


#pragma comment(lib,".\\Dll1.lib")
_declspec(dllimport) int add(int a, int b);




我的问题,我已经把Dll1.lib拷贝到exe所在的文件夹,可是还是提示找不到??

isdkz 发表于 2023-5-16 10:53:59

可能是因为MFC程序的默认工作目录与DLL文件所在的目录不同,导致程序无法找到DLL文件。可以尝试使用GetCurrentDirectory函数获取当前工作目录,并使用SetCurrentDirectory函数将工作目录设置为DLL文件所在目录。

具体代码如下:

TCHAR szDllPath;
GetModuleFileName(NULL, szDllPath, MAX_PATH); // 获取当前EXE文件路径
PathRemoveFileSpec(szDllPath); // 去掉文件名,获取目录路径
PathAppend(szDllPath, _T("Dll1.dll")); // 拼接DLL文件路径

TCHAR szCurDir;
GetCurrentDirectory(MAX_PATH, szCurDir); // 获取当前工作目录

SetCurrentDirectory(szDllPath); // 将工作目录设置为DLL文件所在目录

HMODULE hDll = LoadLibrary(_T("Dll1.dll")); // 加载DLL文件
if (hDll == NULL) {
    // 加载失败,处理错误
}

SetCurrentDirectory(szCurDir); // 恢复工作目录


另外,也可以将DLL文件路径加入到系统路径中,这样程序就可以在任意目录下找到DLL文件。可以使用SetDllDirectory函数实现,具体代码如下:

SetDllDirectory(szDllPath); // 将DLL文件路径加入到系统路径中

HMODULE hDll = LoadLibrary(_T("Dll1.dll")); // 加载DLL文件
if (hDll == NULL) {
    // 加载失败,处理错误
}

SetDllDirectory(NULL); // 恢复系统路径


希望能解决你的问题。
页: [1]
查看完整版本: MFC-当前文件夹