C++ Loadlibrary() error 3765269347
C++ Loadlibrary() error 3765269347
我得到了这个loadlibrary()错误3765269347困扰我。我正在实现一个c++控制台应用程序,构建为x64,以加载x64本机c++ dll。下面是c++控制台应用程序中加载dll的代码:
bool InitDll()
{
HINSTANCE hInst = LoadLibrary(_T("C:\TIS_Nick\Hardware\Devices\ThorDetectorSwitch\TDSTest\TDSTest\Debug\Modules_Native\ThorDetectorSwitch.dll"));
if( hInst != NULL )
{
FreeLibrary( hInst );
return true;
}
else
{
DWORD err = GetLastError();
return false;
}
}
我得到err是3765269347,我认为这意味着c++不能处理这个错误。我确信我加载dll的路径是正确的。
我还使用Monitor Process来跟踪dll和函数被调用的内容。这是我认为相关的信息。
11:08:07.3196483 AM TDSTest.exe 1604 QueryNameInformationFile C:TIS_NickHardwareDevicesThorDetectorSwitchTDSTestTDSTestx64DebugTDSTest.exe SUCCESS Name: TIS_NickHardwareDevicesThorDetectorSwitchTDSTestTDSTestx64DebugTDSTest.exe
11:08:08.5720585 AM TDSTest.exe 1604 CreateFile C:TIS_NickHardwareDevicesThorDetectorSwitchTDSTestTDSTestDebugModules_NativeThorDetectorSwitch.dll SUCCESS Desired Access: Read Attributes, Disposition: Open, Options: Open Reparse Point, Attributes: n/a, ShareMode: Read, Write, Delete, AllocationSize: n/a, OpenResult: Opened
11:08:08.5721041 AM TDSTest.exe 1604 QueryBasicInformationFile C:TIS_NickHardwareDevicesThorDetectorSwitchTDSTestTDSTestDebugModules_NativeThorDetectorSwitch.dll SUCCESS CreationTime: 6/11/2013 6:30:08 PM, LastAccessTime: 6/11/2013 6:30:08 PM, LastWriteTime: 6/12/2013 11:00:28 AM, ChangeTime: 6/12/2013 11:05:51 AM, FileAttributes: A
11:08:08.5721293 AM TDSTest.exe 1604 CloseFile C:TIS_NickHardwareDevicesThorDetectorSwitchTDSTestTDSTestDebugModules_NativeThorDetectorSwitch.dll SUCCESS
11:08:08.5722797 AM TDSTest.exe 1604 CreateFile C:TIS_NickHardwareDevicesThorDetectorSwitchTDSTestTDSTestDebugModules_NativeThorDetectorSwitch.dll SUCCESS Desired Access: Read Data/List Directory, Execute/Traverse, Synchronize, Disposition: Open, Options: Synchronous IO Non-Alert, Non-Directory File, Attributes: n/a, ShareMode: Read, Delete, AllocationSize: n/a, OpenResult: Opened
11:08:08.5723228 AM TDSTest.exe 1604 CreateFileMapping C:TIS_NickHardwareDevicesThorDetectorSwitchTDSTestTDSTestDebugModules_NativeThorDetectorSwitch.dll FILE LOCKED WITH ONLY READERS SyncType: SyncTypeCreateSection, PageProtection:
11:08:08.5724896 AM TDSTest.exe 1604 CreateFileMapping C:TIS_NickHardwareDevicesThorDetectorSwitchTDSTestTDSTestDebugModules_NativeThorDetectorSwitch.dll SUCCESS SyncType: SyncTypeOther
11:08:08.5725861 AM TDSTest.exe 1604 Load Image C:TIS_NickHardwareDevicesThorDetectorSwitchTDSTestTDSTestDebugModules_NativeThorDetectorSwitch.dll SUCCESS Image Base: 0x7fef7830000, Image Size: 0x6d000
11:08:08.5726385 AM TDSTest.exe 1604 QueryNameInformationFile C:TIS_NickHardwareDevicesThorDetectorSwitchTDSTestTDSTestDebugModules_NativeThorDetectorSwitch.dll SUCCESS Name: TIS_NickHardwareDevicesThorDetectorSwitchTDSTestTDSTestDebugModules_NativeThorDetectorSwitch.dll
11:08:08.5728910 AM TDSTest.exe 1604 CreateFile C:TIS_NickHardwareDevicesThorDetectorSwitchTDSTestTDSTestDebugModules_NativeThorDetectorSwitch.dll SUCCESS Desired Access: Generic Read, Disposition: Open, Options: Synchronous IO Non-Alert, Attributes: n/a, ShareMode: Read, Write, Delete, AllocationSize: n/a, OpenResult: Opened
11:08:08.5912215 AM TDSTest.exe 1604 CloseFile C:TIS_NickHardwareDevicesThorDetectorSwitchTDSTestTDSTestDebugModules_NativeThorDetectorSwitch.dll SUCCESS
我很抱歉看起来有点乱,我想在这里发布一张照片,但事实证明我没有足够的声誉来这样做。如有任何建议,欢迎。
我已经追踪到ThorDetectorSwitch.dll
中的构造函数,它看起来像这样:
ThorDetectorSwitch::ThorDetectorSwitch() : _mcSwitch(__uuidof(MCLControlClass))
{
_A = WstringToBSTR(L"A");
_B = WstringToBSTR(L"B");
_C = WstringToBSTR(L"C");
_D = WstringToBSTR(L"D");
_deviceDetected = FALSE;
}
我在第一个括号处设置了断点,但它永远不会进入函数。相反,它跳转到异常。我想MCLControlClass
有问题,还是_mcSwitch
?
像这样的大错误数值的通用策略是将它们转换为十六进制。3765269347 == 0xE06D7363。这是一个神奇的数字,谷歌也很好。微软程序员使用的一种策略是将异常码的最后3个字节改为ASCII码。6D7363 == "msc"。没有足够的空间添加++:)我得到err是3765269347
诊断是DLL中的DllMain()函数由于未处理的c++异常而死亡。这当然会发生。
调试它的方法是在抛出异常时强制调试器停止,在操作系统加载器捕获它并将其转换为失败代码之前。在Visual Studio中,使用Debug> Exceptions,选中抛出的c++异常复选框。
调试器停止时所看到的内容在很大程度上取决于您是否有一个用于DLL的好的PDB文件以及您是否有源代码。当然,通常需要源代码来修复问题。如果您无法访问这样的东西,那么您确实需要编写该DLL的程序员的帮助。给他发一个小的复制项目,复制崩溃。
这是一个特殊的异常。请读一读MS:解码抛出的c++异常(0xE06D7363)
相关文章:
- "error: no matching function for call to"构造函数错误
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 使用 LuaBridge 将 LuaJIT 绑定到C++会导致"PANIC: unprotected error"
- OpenMP卸载说'fatal error: could not find accel/nvptx-none/mkoffload'
- C++错误:"error: int aaa::bbb is protected within this context"
- 尝试链接我的着色器时,我收到错误代码"error c5145 must write to gl_position"
- C++,在int数组中输入字符串或字符会输出0,而不是ascii或error
- 使用 cmake 的 LLVM 构建在 tsan_libdispatch_mac.cc 期间失败; "Error: conflicting types for ..."
- C++ "error: invalid use of void expression"
- struct.error:解压缩 C++ 结构时,解包需要 288 字节的缓冲区
- 如何修复"error: ‘_1’ was not declared in this scope"?
- 从不同目录执行时"symbol lookup error:",否则从构建目录执行时按预期工作
- 对象声明中的模板"error: expected expression"
- 在C++中使用 Catch 测试框架编译错误"error: expected ';' at end of declaration list"
- OpenCV 3.4.1 error readNetFromTensorflow 无法在 cv::d nn::ReadProtoFromBinaryFile 中打开 .pb
- 已解决 - C++ 的崇高文本中的"fatal error: opencv: no such file or directory"
- 为什么我会"error: expected expression"?
- CMake Error at modules/videoio/cmake/detect_ffmpeg.cmake:16
- 如果两个静态库使用相同的另一个静态库,如何避免"LNK2005 Already Defined error"?
- C++ Loadlibrary() error 3765269347