我生成了“Regular DLL Dynamically Linked to MFC”型的DLL。用LoadLibrary()启动DLL。问题出现了:发现这个DLL必须与调用者(进程)处于相同路径下。如果放到别处,即使给LoadLibrary()输入全路径,也不能启动DLL。而如果用向导创建“Win32 DLL”型的DLL就可以想放哪放哪。问题明确:如何实现“Regular DLL Dynamically Linked to MFC”型的DLL想放哪放哪?

解决方案 »

  1.   

    http://www.codeguru.com/dll/AppPath.shtml
      

  2.   

    masterz(MS MVP) ,谢谢你,我看完了,对我是有帮助的.
    但是那篇英文资料并没有解决我的问题.
    或许是我没有吃透那文章的意思?能不能再帮我讲解一下我的问题.masterz(MS MVP) ,Thank you any way,会给你节分的:)
      

  3.   

    哦哟,masterz(MS MVP),根据你提供的线索,我解决了另一个问题!有点象发明阿司匹林吧。
    那个问题是“在Regular DLL里用DoModal出示对话框时,出现Assert警告”的问题。根据你的线索里提到的微软技术文章《Q194300》解决了:)
      

  4.   

    还有人能帮助想想吗?用MFC的Dll Wizard创建的Dll只能放在调用它的可执行文件的相同目录下,换句话说,LoadLibrary函数的参数里不能输入与可执行文件目录不同的目录。怎么回事?怎么办?再举例说:
    可执行文件 A.exe 在 C:\abc\ 下面,它要调用 B.dll,而 B.dll 在 C:\abc\def\ 下面。
    如果使用 LoadLibrary("C:\abc\def\B.dll"); ,是无法启动Dll的,这个API返回NULL句柄。
    但是如果创建的是“Win32 Dll”就不会有上述问题。好郁闷啊!