鱼C论坛

 找回密码
 立即注册
查看: 334|回复: 1

[已解决]MFC-当前文件夹

[复制链接]
发表于 2023-5-16 10:53:23 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x

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

复制代码



我的问题,我已经把Dll1.lib拷贝到exe所在的文件夹,可是还是提示找不到  ??
最佳答案
2023-5-16 10:53:59
可能是因为MFC程序的默认工作目录与DLL文件所在的目录不同,导致程序无法找到DLL文件。可以尝试使用GetCurrentDirectory函数获取当前工作目录,并使用SetCurrentDirectory函数将工作目录设置为DLL文件所在目录。

具体代码如下:
  1. TCHAR szDllPath[MAX_PATH];
  2. GetModuleFileName(NULL, szDllPath, MAX_PATH); // 获取当前EXE文件路径
  3. PathRemoveFileSpec(szDllPath); // 去掉文件名,获取目录路径
  4. PathAppend(szDllPath, _T("Dll1.dll")); // 拼接DLL文件路径
  5. TCHAR szCurDir[MAX_PATH];
  6. GetCurrentDirectory(MAX_PATH, szCurDir); // 获取当前工作目录
  7. SetCurrentDirectory(szDllPath); // 将工作目录设置为DLL文件所在目录
  8. HMODULE hDll = LoadLibrary(_T("Dll1.dll")); // 加载DLL文件
  9. if (hDll == NULL) {
  10.     // 加载失败,处理错误
  11. }
  12. SetCurrentDirectory(szCurDir); // 恢复工作目录
复制代码

另外,也可以将DLL文件路径加入到系统路径中,这样程序就可以在任意目录下找到DLL文件。可以使用SetDllDirectory函数实现,具体代码如下:
  1. SetDllDirectory(szDllPath); // 将DLL文件路径加入到系统路径中
  2. HMODULE hDll = LoadLibrary(_T("Dll1.dll")); // 加载DLL文件
  3. if (hDll == NULL) {
  4.     // 加载失败,处理错误
  5. }
  6. SetDllDirectory(NULL); // 恢复系统路径
复制代码

希望能解决你的问题。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-5-16 10:53:59 | 显示全部楼层    本楼为最佳答案   
可能是因为MFC程序的默认工作目录与DLL文件所在的目录不同,导致程序无法找到DLL文件。可以尝试使用GetCurrentDirectory函数获取当前工作目录,并使用SetCurrentDirectory函数将工作目录设置为DLL文件所在目录。

具体代码如下:
  1. TCHAR szDllPath[MAX_PATH];
  2. GetModuleFileName(NULL, szDllPath, MAX_PATH); // 获取当前EXE文件路径
  3. PathRemoveFileSpec(szDllPath); // 去掉文件名,获取目录路径
  4. PathAppend(szDllPath, _T("Dll1.dll")); // 拼接DLL文件路径
  5. TCHAR szCurDir[MAX_PATH];
  6. GetCurrentDirectory(MAX_PATH, szCurDir); // 获取当前工作目录
  7. SetCurrentDirectory(szDllPath); // 将工作目录设置为DLL文件所在目录
  8. HMODULE hDll = LoadLibrary(_T("Dll1.dll")); // 加载DLL文件
  9. if (hDll == NULL) {
  10.     // 加载失败,处理错误
  11. }
  12. SetCurrentDirectory(szCurDir); // 恢复工作目录
复制代码

另外,也可以将DLL文件路径加入到系统路径中,这样程序就可以在任意目录下找到DLL文件。可以使用SetDllDirectory函数实现,具体代码如下:
  1. SetDllDirectory(szDllPath); // 将DLL文件路径加入到系统路径中
  2. HMODULE hDll = LoadLibrary(_T("Dll1.dll")); // 加载DLL文件
  3. if (hDll == NULL) {
  4.     // 加载失败,处理错误
  5. }
  6. SetDllDirectory(NULL); // 恢复系统路径
复制代码

希望能解决你的问题。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-2 00:47

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表