gpt4 book ai didi

c++ - _findnext (c++) 连续抛出访问冲突

转载 作者:可可西里 更新时间:2023-11-01 11:16:20 27 4
gpt4 key购买 nike

我对 c/c++ 非常陌生,但发现自己需要从源代码(显然不是我的代码)编译一个非常大的项目。在过去的几天里,我设法解决了许多小问题,但我不太能解决这个问题。

有一个 MP_DLL_Manager_c 类,其方法 search_library 始终产生访问冲突错误。不幸的是,它被源代码编译的每个应用程序调用,因为它是设置环境所必需的。

方法是:

bool MP_Dll_Manager_c::search_library(vector<string> * lib_names, const char * path)
{
struct _finddata_t c_file;
long hFile;
static string fname;
string buffer;
buffer = path;
buffer += "\\";
buffer += MP_Dll_Manager_c::get_dll_type();
if ( (hFile = (long)_findfirst(buffer.c_str(), &c_file)) == -1L )
{
mp_error_msg( "MP_Dll_Manager::search_library","No *.dll files in current directory: [%s]\n", buffer.c_str() );
return false;
}
else
{ if (strcmp( c_file.name ,"mptk.dll") && strcmp( c_file.name ,"libmptk.dll") && strcmp( c_file.name ,"mptk4matlab.dll") && strcmp( c_file.name ,"libmptk4matlab.dll") ){
fname = path ;
fname += "\\";
fname += c_file.name;


(*lib_names).push_back(fname);
}

while (_findnext(hFile, &c_file) == 0 )
{
if (strcmp( c_file.name ,"mptk.dll") && strcmp( c_file.name ,"libmptk.dll") && strcmp( c_file.name ,"mptk4matlab.dll") && strcmp( c_file.name ,"libmptk4matlab.dll") ){
fname = path ;
fname += "\\";
fname += c_file.name;
(*lib_names).push_back(fname);}

}
_findclose(hFile);
}

return true;
}

它只是应该返回指定路径中的 dll(前提是它们不匹配任何不应存在的内容)。但是,我在 _findnext 处遇到未处理的异常 - 访问冲突。我无法弄清楚原因。

call stack

最佳答案

在定义文件名时使用intptr_t hFile 而不是long。可以引用MSDN文档_findnext

关于c++ - _findnext (c++) 连续抛出访问冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41844603/

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