Привет, коллеги,
Сегодня я столкнулся с очень странной проблемой, и я не совсем уверен в том, что ее вызывает.Вот функция, которую я использую для получения текущего рабочего каталога:
#ifdef _WIN32
#include <direct.h>
#define GetCurrentDir _getcwd
#else
#error "There is currently no support for non windows based systems!"
#endif
const std::string getCurrentPath()
{
char CurrentPath{_MAX_PATH];
GetCurrentDir(CurrentPath, _MAX_PATH);
CurrentPath[_MAX_PATH - 1] = '/0';
return std::string(CurrentPath);
}
Эта функция хорошо работает как отдельная функция.Однако, если я объявляю это как статическую функцию внутри класса:
static __declspec(dllexport) const std::string getCurrentPath(void);
и .dll, я получаю «ошибку отладочного подтверждения», когда я пытаюсь сделать
std::cout<<CUtilities::getCurrentPath()<<std::endl;
Если явместо этого напишите:
std::string dir = CUtilities::getCurrentPath();
std::cout<<"Dir is : "<<dir<<std::endl;
все работает нормально.Я полностью сбит с толку относительно того, что я делаю неправильно.Есть идеи?