gpt4 book ai didi

C++ Loadlibrary() 错误 3765269347

转载 作者:太空狗 更新时间:2023-10-29 19:46:08 27 4
gpt4 key购买 nike

我有这个 Loadlibraty() 错误 3765269347 困扰着我。我正在实现一个构建为 x64 的 C++ 控制台应用程序,以加载 x64 native 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;
}
}

我得到的错误是 3765269347,我认为这意味着 C++ 无法处理此错误。我确定我加载 dll 的路径是正确的。

我还使用 Monitor Process 来跟踪 dll 和函数被调用的内容。这是我认为相关的信息。

11:08:07.3196483 AM TDSTest.exe 1604    QueryNameInformationFile    C:\TIS_Nick\Hardware\Devices\ThorDetectorSwitch\TDSTest\TDSTest\x64\Debug\TDSTest.exe   SUCCESS Name: \TIS_Nick\Hardware\Devices\ThorDetectorSwitch\TDSTest\TDSTest\x64\Debug\TDSTest.exe
11:08:08.5720585 AM TDSTest.exe 1604 CreateFile C:\TIS_Nick\Hardware\Devices\ThorDetectorSwitch\TDSTest\TDSTest\Debug\Modules_Native\ThorDetectorSwitch.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_Nick\Hardware\Devices\ThorDetectorSwitch\TDSTest\TDSTest\Debug\Modules_Native\ThorDetectorSwitch.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_Nick\Hardware\Devices\ThorDetectorSwitch\TDSTest\TDSTest\Debug\Modules_Native\ThorDetectorSwitch.dll SUCCESS
11:08:08.5722797 AM TDSTest.exe 1604 CreateFile C:\TIS_Nick\Hardware\Devices\ThorDetectorSwitch\TDSTest\TDSTest\Debug\Modules_Native\ThorDetectorSwitch.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_Nick\Hardware\Devices\ThorDetectorSwitch\TDSTest\TDSTest\Debug\Modules_Native\ThorDetectorSwitch.dll FILE LOCKED WITH ONLY READERS SyncType: SyncTypeCreateSection, PageProtection:
11:08:08.5724896 AM TDSTest.exe 1604 CreateFileMapping C:\TIS_Nick\Hardware\Devices\ThorDetectorSwitch\TDSTest\TDSTest\Debug\Modules_Native\ThorDetectorSwitch.dll SUCCESS SyncType: SyncTypeOther
11:08:08.5725861 AM TDSTest.exe 1604 Load Image C:\TIS_Nick\Hardware\Devices\ThorDetectorSwitch\TDSTest\TDSTest\Debug\Modules_Native\ThorDetectorSwitch.dll SUCCESS Image Base: 0x7fef7830000, Image Size: 0x6d000
11:08:08.5726385 AM TDSTest.exe 1604 QueryNameInformationFile C:\TIS_Nick\Hardware\Devices\ThorDetectorSwitch\TDSTest\TDSTest\Debug\Modules_Native\ThorDetectorSwitch.dll SUCCESS Name: \TIS_Nick\Hardware\Devices\ThorDetectorSwitch\TDSTest\TDSTest\Debug\Modules_Native\ThorDetectorSwitch.dll
11:08:08.5728910 AM TDSTest.exe 1604 CreateFile C:\TIS_Nick\Hardware\Devices\ThorDetectorSwitch\TDSTest\TDSTest\Debug\Modules_Native\ThorDetectorSwitch.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_Nick\Hardware\Devices\ThorDetectorSwitch\TDSTest\TDSTest\Debug\Modules_Native\ThorDetectorSwitch.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 有问题吗?

最佳答案

I got err is 3765269347

像这样的大错误数值的通用策略是将它们转换为十六进制。 3765269347 == 0xE06D7363。这是一个神奇的数字,谷歌也很好。 Microsoft 程序员使用的一种策略是将异常代码的最后 3 个字节设为 ASCII 代码。 6D7363 ==“MSC”。没有足够的空间来添加++ :)

诊断是 DLL 中的 DllMain() 函数由于未处理的 C++ 异常而终止。那当然会发生。

调试它的方法是在抛出异常时强制调试器停止,然后 OS 加载器才能捕获它并将其变成故障代码。在 Visual Studio 中,使用“调试”>“异常”,为 C++ 异常勾选“抛出”复选框。

理解调试器停止时所看到的内容在很大程度上取决于您是否有用于 DLL 的良好 PDB 文件以及您是否有源代码。当然,通常需要源代码来解决问题。如果您无权访问此类内容,那么您确实需要编写该 DLL 的程序员的帮助。向他发送一个重现崩溃的小型重现项目。

关于C++ Loadlibrary() 错误 3765269347,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17069336/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com