Windows Clang Hello World lnk4217 - PullRequest
0 голосов
/ 10 мая 2018

Я установил Clang версии 6.0, а также Visual Studio 2017. Я компилирую простое приложение "Hello World":

#include <iostream>

int main()
{
  std::cout << "Hello, World!" << std::endl;
  return 0;
}

с использованием

clang hello.cpp

Это дает мне предупреждения:

hello-d1b2c6.o : warning LNK4217: locally defined symbol __std_terminate 
imported in function "int `public: static unsigned __int64 __cdecl
std::char_traits<char>::length(char const * const)'::`1'::dtor$2"
(?dtor$2@?0??length@?$char_traits@D@std@@SA_KQEBD@Z@4HA)

hello-d1b2c6.o : warning LNK4217: locally defined symbol _CxxThrowException 
imported in function "public: void __cdecl std::ios_base::clear(int,bool)"
(?clear@ios_base@std@@QEAAXH_N@Z)

Мне известно, что я могу смягчить эти предупреждения, используя clang-cl (как предложено в этом вопросе SO и здесь ), однако я не хочу делать это без полное понимание последствий.

Итак, вот мои актуальные вопросы:

  1. Что означают эти предупреждения или что их вызывает?
  2. Что меняет использование clang-cl и что я должен иметь в виду при его использовании? (Я думаю, что есть причина не использовать его все время)
  3. Существуют ли другие способы не получать эти предупреждения (кроме отключения предупреждений)?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...