C++;从当前路径加载库() 我是一个.NET开发者,在C++中做了一些小事情,所以我有点麻烦。 我用 Hyth= LoadLibrary(文本(“MyDLL.DLL”))加载另一个C++ DLL;

C++;从当前路径加载库() 我是一个.NET开发者,在C++中做了一些小事情,所以我有点麻烦。 我用 Hyth= LoadLibrary(文本(“MyDLL.DLL”))加载另一个C++ DLL;,c++,dll,C++,Dll,有人可以告诉我如何从当前目录加载dll(而不提前知道当前目录是什么) 我知道我应该使用类似于GetFullPathName的东西,但是我在让它自己工作时遇到了一些麻烦…使用。使用。我相信从当前目录加载是默认的也是第一次搜索。请参阅MSDN参考资料 搜索的第一个目录是 包含图像文件的目录 用于创建调用进程 (有关更多信息,请参阅 CreateProcess函数)。这样做 允许私有动态链接库 (DLL)与进程关联的文件 在不添加 进程的已安装目录 路径环境变量 我认为从当前目录加载是默认的也是第一次

有人可以告诉我如何从当前目录加载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更能帮助我的例子。