Подтвердить что ты не робот

clang++ (версия 5) и предупреждение LNK4217

Я просто изучаю, как кодировать.

Я установил clang версии 5 в систему Windows 10 с помощью visual studio 14.

Я создал файл cpp world hello world для тестирования, который работает.

Образец кода

#include <iostream>
using namespace std;

int main()
{
    cout << "Hello World!\n";
    int rip{1};
    int dal{4};

    int kane = rip + dal;

    cout << kane;
    return 0;
}

команда

clang++ -o .\bin\testing.exe test.cpp

Clang компилируется, и я получаю исполняемый файл, который работает как ожидалось. однако я получаю это сообщение.

    test-3e53b3.o : warning LNK4217: locally defined symbol ___std_terminate imported in function "int 'public: __thiscall std::basic_ostream<char,struct std::char_traits<char> >::sentry::~sentry(void)'::'1'::dtor$5" ([email protected][email protected][email protected][email protected]@[email protected]@@[email protected]@[email protected]@4HA)
test-3e53b3.o : warning LNK4217: locally defined symbol [email protected] imported in function "public: void __thiscall std::ios_base::clear(int,bool)" ([email protected][email protected]@@[email protected])

Я искал в Интернете и могу найти похожие проблемы, но они не совпадают.

Я понимаю, что это, может быть, просто для вас, ребята, но я в недоумении, я использовал различные IDES и GCC, и этот код ранее не предупреждал об этом предупреждении.

4b9b3361

Ответ 1

Добавьте -Xclang -flto-visibility-public-std в свои параметры компилятора.

Вот так:

clang++ -Xclang -flto-visibility-public-std -o test.exe test.cpp

Редактировать:

Вместо этого используйте clang-cl:

clang-cl -o test.exe test.cpp