Visual Studio c ++ LoadLibary 错误:程序无法启动,因为您的计算机中缺少 dll
Visual Studio c++ LoadLibary error: The program can't start because dll is missing from your computer
我正在尝试将程序连接到dll。
连接代码:
HINSTANCE lib;
lib = LoadLibrary("DLL.dll");
if (lib)
{
cout << "Libary Loaded !";
FreeLibrary(lib);
}
else
{
cout<<GetLastError();
}
DLL代码(位于DLL.cpp):
#include "pch.h"
#include "DLL.h"
#include<iostream>
using namespace std;
int f()
{
return 11;
}
一旦我运行程序,我会得到这个错误:
程序无法启动,因为<您的计算机中缺少dllname>
在每个dll请求后,我从互联网上下载dll并将其放入dll和程序所在的文件夹。以下是我请求的一些dll:
- VCRUNTIME140_APP.dll
- api-ms-win-core-processthreads-l1-1-2-dll
一旦我点击"确定"按钮后出现错误,我就会得到GetLastError() = 126
。
我试图将我的程序链接到库VCRUNTIME140_APP.dll
,只是为了检查它是否要加载库,它确实加载了。所以问题可能在我试图连接的库中。
我使用的是Visual Studio 2015。DLL和程序都是用x86(32位)编译的。我已经安装了所有的重新分发包。我尝试使用x64(64位),但收到了相同的错误和相同的dll请求。我试图将DLL放入构建文件夹和调试文件夹中,但都不起作用。
我也尝试过使用**LoadLibaryA**
和**LoadLibaryW**
,但效果不太好。
PS:刚刚尝试了我在CodeBlocks而不是Visual Studio 2015中创建的dll,它已经连接。应该是Visual Studio编译器特定的问题。
如果您查看LoadLibrary函数的语法:
HMODULE WINAPI LoadLibrary(
_In_ LPCTSTR lpFileName
);
您看到没有选项可以指定从何处加载库
相反,使用函数LoadLibraryEx开关具有以下语法:
HMODULE WINAPI LoadLibraryEx(
_In_ LPCTSTR lpFileName,
_Reserved_ HANDLE hFile,
_In_ DWORD dwFlags
);
因此,通过使用dwFlags参数,您现在可以指定程序可以尝试从何处加载库。
dwFlags示例:
LOAD_LIBRARY_SEARCH_APPLICATION_DIR 0x00000200:
switch的意思是:
If this value is used, the application's installation directory is searched
for the DLL and its dependencies. Directories in the standard search path
are not searched.
因此,要继续,您必须使用所需的dwFlags参数来查找dll。
- C++ Windows 驱动程序MSB3030无法复制该文件,因为它找不到
- 为什么使用 P/Invoke 调用 dll 时,某些计算机中的 LoadLibrary 失败?
- EvtExportLogneneneba API正在将远程计算机的事件日志保存到远程PC本身.如何将其保存到主机
- 我可以在这里替换什么,因为我不能在 C# 中使用隐式变量的 lambda 函数?
- 为什么我能够为阵列分配比计算机实际拥有的内存更多的内存
- 程序无法启动,因为缺少 libmpc-3.dll
- 我可以使用任何好的逻辑来阻止计算机将 O 放在井字游戏中的现有 X 上
- 数组类型 int[n][n] 不可赋值,因为表达式必须具有常量值
- 在这个函数中是有缺陷的,因为取消引用 null 是无效的,所以我想更改代码
- C++ 计算机猜测用户数量在 7 次猜测以内
- 无法为 X.radio 创建中等可视化,因为找不到网络节点可视化 - Omnet++
- 系统错误:程序无法启动,因为您的计算机中缺少MSVCP140D.DLL。尝试重新安装该程序以解决此问题
- 如何引用要以C++打开的文件,因为其完整路径名将因计算机而异
- 程序无法启动,因为您的计算机中缺少libgcc_s_dw2-1.dll。简单的控制台
- Qt + VS2010:程序无法启动,因为<xyz>您的计算机中缺少.dll
- Visual Studio c ++ LoadLibary 错误:程序无法启动,因为您的计算机中缺少 dll
- 程序无法启动,因为您的计算机中缺少MSVCP90D.dll
- 此程序无法启动,因为您的计算机中缺少freeglut.dll
- 此程序无法启动,因为您的计算机中缺少 Libeay32.dll
- 程序无法启动,因为您的计算机中缺少 mfc120ud.dll