C++;从当前路径加载库() 我是一个.NET开发者,在C++中做了一些小事情,所以我有点麻烦。 我用 Hyth= LoadLibrary(文本(“MyDLL.DLL”))加载另一个C++ DLL;
有人可以告诉我如何从当前目录加载dll(而不提前知道当前目录是什么)C++;从当前路径加载库() 我是一个.NET开发者,在C++中做了一些小事情,所以我有点麻烦。 我用 Hyth= LoadLibrary(文本(“MyDLL.DLL”))加载另一个C++ DLL;,c++,dll,C++,Dll,有人可以告诉我如何从当前目录加载dll(而不提前知道当前目录是什么) 我知道我应该使用类似于GetFullPathName的东西,但是我在让它自己工作时遇到了一些麻烦…使用。使用。我相信从当前目录加载是默认的也是第一次搜索。请参阅MSDN参考资料 搜索的第一个目录是 包含图像文件的目录 用于创建调用进程 (有关更多信息,请参阅 CreateProcess函数)。这样做 允许私有动态链接库 (DLL)与进程关联的文件 在不添加 进程的已安装目录 路径环境变量 我认为从当前目录加载是默认的也是第一次
我知道我应该使用类似于
GetFullPathName
的东西,但是我在让它自己工作时遇到了一些麻烦…使用。使用。我相信从当前目录加载是默认的也是第一次搜索。请参阅MSDN参考资料
搜索的第一个目录是
包含图像文件的目录
用于创建调用进程
(有关更多信息,请参阅
CreateProcess函数)。这样做
允许私有动态链接库
(DLL)与进程关联的文件
在不添加
进程的已安装目录
路径环境变量
我认为从当前目录加载是默认的也是第一次搜索。请参阅MSDN参考资料 搜索的第一个目录是 包含图像文件的目录 用于创建调用进程 (有关更多信息,请参阅 CreateProcess函数)。这样做 允许私有动态链接库 (DLL)与进程关联的文件 在不添加 进程的已安装目录 路径环境变量
可以使用函数
GetCurrentDirectory()
获取进程当前目录:
现在进程当前目录的路径位于bufCurrentDirectory
,除非函数失败。只需将“\\mydll.dll”
附加到路径上,就有了指向dll的绝对路径
由于进程的当前目录有些可变,因此最好使用可执行文件的路径。要获取当前可执行文件的路径,可以执行以下操作:
TCHAR bufExePath[MAX_PATH + 1] = { 0 };
DWORD dwNumCharacters = ::GetModuleFileName(NULL, bufExePath, MAX_PATH);
if(dwNumCharacters == 0) error();
现在
bufExePath
包含exe的整个路径,包括“\\my.exe”
。将my.exe
替换为mydll.dll
,您将拥有指向dll的绝对路径。出于安全考虑,我建议使用此方法而不是GetCurrentDirectory()
方法。可以使用函数GetCurrentDirectory()
获取进程当前目录:
现在进程当前目录的路径位于bufCurrentDirectory
,除非函数失败。只需将“\\mydll.dll”
附加到路径上,就有了指向dll的绝对路径
由于进程的当前目录有些可变,因此最好使用可执行文件的路径。要获取当前可执行文件的路径,可以执行以下操作:
TCHAR bufExePath[MAX_PATH + 1] = { 0 };
DWORD dwNumCharacters = ::GetModuleFileName(NULL, bufExePath, MAX_PATH);
if(dwNumCharacters == 0) error();
现在
bufExePath
包含exe的整个路径,包括“\\my.exe”
。将my.exe
替换为mydll.dll
,您将拥有指向dll的绝对路径。出于安全考虑,我建议使用此方法而不是GetCurrentDirectory()
方法。我不知道为什么,但实际上根本不是这样。我发布了使用LoadLibrary的代码行。当我加载的dll文件不在“C:\”中时,它就不工作了。当我将dll文件复制到C:\时,它工作得非常好!我不知道为什么,但实际上根本不是这样。我发布了使用LoadLibrary的代码行。当我加载的dll文件不在“C:\”中时,它就不工作了。当我将dll文件复制到C:\时,它工作得非常好!我读过各种不同的方法来检索目录路径,但我不是一个C++程序员,它有问题,所以我正在寻找一个例子来帮助我多一点MSDN。我阅读了各种不同的方法来检索目录路径,但我不是一个C++程序员有麻烦,所以我在寻找一个比msdn更能帮助我的例子。