Как мне обработать: Ошибка C2039 «назначить»: не является членом «cl :: string» в Visual Studio 2017? - PullRequest
0 голосов
/ 18 марта 2019

Я хочу создать простой код OpenCL в Visual Studio C ++, но при сборке произошла ошибка. Ошибка

Error C2039 'assign': is not a member of 'cl::string'

Вопрос о cl::string. Однако, когда я строю код с std::string вместо cl::string, он работает очень хорошо. Как мне справиться с этим?

Вот код:

#define __CL_ENABLE_EXCEPTIONS
#define __NO_STD_STRING
#include <iostream>


#ifdef MAC
#include<OpenCL.hpp>
#else
#include<CL/cl.hpp>
#endif // MAC



int main() {

    std::vector < cl::Platform > platforms;
    cl::string platformVendorName;

        cl::Platform::get(&platforms);
        std::cout << "There are " << platforms.size() << " platforms." << 
        std::endl << std::endl;
        for (size_t j = 0; j < platforms.size(); j++)
        {   
            platformVendorName = platforms[j].getInfo<CL_PLATFORM_VENDOR>();

            std::cout << "CL_PLATFORM_VENDOR: " << 
            platformVendorName.c_str() << std::endl;

        }

    system("pause");
    return 0;
}

1 Ответ

0 голосов
/ 18 марта 2019

Почему бы не использовать std :: string?

Класс string, определенный в cl пространстве имен, устарел, поскольку, по крайней мере, OpenCL 1.2 и его использование не рекомендуется. Взято из cl.hpp :

/*! \class string
 * \brief Simple string class, that provides a limited subset of std::string
 * functionality but avoids many of the issues that come with that class.

 *  \note Deprecated. Please use std::string as default or
 *  re-define the string class to match the std::string
 *  interface by defining STRING_CLASS
 */
class CL_EXT_PREFIX__VERSION_1_1_DEPRECATED string CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...