GetPrivateProfileStringA返回"系统找不到指定的文件。"尽管该文件存在

时间:2017-05-31 12:38:12

标签: c++ ini

在CPP Visual Studio 2010中。我需要从ini文件中读取一些配置。以下代码无效。有人可以帮我修理它。

char * path  = "C:\\NotBackedUp\\Workspaces\\LDAP-DLL\\LDAPTestApp\\bin\\Debug\\conf\\ldap.ini";
    std::wcout << "path: " << path << std::endl;

    if(!ATLPath::FileExists(path))
    {
        HRESULT hr = ATL::AtlHresultFromLastError();
        ATLTRACE("%x\n",hr);//system could not find the file specified!
        std::cout << "File not found " << std::endl;
        return 0;
    }
    else 
    {
        std::cout << "File found " << std::endl;
    }

    char valueRead[320];
    int a = GetPrivateProfileStringA("ldap", "url", "error", valueRead, 320, path);
    std::cout << "Value Read " << valueRead << std::endl;
    std::cout << "Error String " << GetLastErrorAsString();

上面的代码生成下面的日志,你可以看到ATLPath :: FileExists返回true,但仍然是getLastError说明系统找不到指定的文件

path: C:\NotBackedUp\Workspaces\LDAP-DLL\LDAPTestApp\bin\Debug\conf\ldap.ini
File found
Value Read error
Error String The system cannot find the file specified.

我的ldap.ini文件有以下行,可在上面的路径中找到

[ldap]
url=ldap://testserver

任何帮助都非常感谢

感谢

1 个答案:

答案 0 :(得分:0)

当GetPrivateProfileString无法找到某个部分或值时,也会设置您获得的ERROR_FILE_NOT_FOUND错误代码。

您的代码在我的Win10上使用您的ini文件正常工作。

使用十六进制查看器/编辑器验证您的ldap.ini实际上是ASCII,并且它不包含BOM