C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[75956] Re:Thread 예제를 컴파일 하는데, 에러가 발생 합니다.
빌더(TWx) [builder] 1577 읽음    2020-08-27 16:03
뽀뽀중 님이 쓰신 글 :
: 10.4 버전이며, 최신 패치까지 적용 하였습니다.
:
: 1. Thread 예제 컴파일 에러
: 인터넷 강좌중 Thread 예제를 bcc32c 로 컴파일 하였는데, 단순한 코드 인데도 에러가 발생 합니다.
: 뭐가 문제 일까요?
:
: C++ 17 이므로 c++17 표준 함수는 전부 사용 가능 할 것이라는 기대를 하였습니다.
:
: 코드는 아래와 같습니다. 정말 단순 합니다.
:
: // 내 생에 첫 쓰레드
: #include <iostream>
: #include <thread>
: using std::thread;
:
: void func1() {
:   for (int i = 0; i < 10; i++) {
:     std::cout << "쓰레드 1 작동중! \n";
:   }
: }
:
: void func2() {
:   for (int i = 0; i < 10; i++) {
:     std::cout << "쓰레드 2 작동중! \n";
:   }
: }
:
: void func3() {
:   for (int i = 0; i < 10; i++) {
:     std::cout << "쓰레드 3 작동중! \n";
:   }
: }
: int main() {
:   thread t1(func1);
:   thread t2(func2);
:   thread t3(func3);
:
:   t1.join();
:   t2.join();
:   t3.join();
: }
:
: **** 에러 메세지 입니다.
: D:\C++Test>bcc32c Thread11.cpp
: Embarcadero C++ 7.50 for Win32 Copyright (c) 2012-2020 Embarcadero Technologies, Inc.
: Thread11.cpp:
: Turbo Incremental Link 6.93 Copyright (c) 1997-2020 Embarcadero Technologies, Inc.
: Error: Unresolved external '__Cnd_init' referenced from C:\USERS\DUSTL\APPDATA\LOCAL\TEMP\THREAD11-57D3D1.O
: Error: Unresolved external 'std::_Throw_C_error(int)' referenced from C:\USERS\DUSTL\APPDATA\LOCAL\TEMP\THREAD11-57D3D1.O

: 2. 자동완성 기능 안됨
: 컴파일러를 C++ 17를 사용하면 코드 자동완성 기능이 작동 하지 않습니다. (첨부 파일 동영상 참고)
: 이문제는 나만 있는 것인가요?
: 10.3버전도 설치되어 있는데, 이 것 때문일까요?
:
:
:


답변:


1.

위 에러는 cw32mt.lib 가 링크되지 않아 발생하는 링크에러고.

콘솔 프로젝트 생성할 때 Multi Threaded 를 선택하지 않으면 cw32mt.lib 가 사용되지 않고 cw32.lib가 사용 됌.
cw32mt.lib는 멀티 쓰레드를 지원하도록 만들어진 C 런타임 라이브러리 임.

멀티코어, 멀티쓰레드가 일반화되어 사용되는 시대흐름에 따라 C 런타임 라이브러리는 당연히 멀티쓰레드를
지원하도록 되어 있음에도 불구하고 이를 구분해서 지정하도록 하는 것은 시대흐름과 동떨어진 구시대적 발상임.

IDE에서 구분하는 옵션이 별도로 없으므로 콘솔 프로젝트를 생성할 때 Multi Threaded를 선택해야 함.


2.

엠바에서 오픈소스를 배껴서 배포하고 있는 LSP 서버(cquery)는 IDE(LSP 클라이언트)와
LSP 서버간에 개별적인 파이프라인을 이용하므로 10.3 / 10.4 등 여러개가 같이 설치되어 있어도 상관 없고.

LSP 클라이언트(IDE)와 서버쪽 모두 워낙 엉터리로 만들어 놓았기 때문에 더 이상 언급할 가치도 없음.




+ -

관련 글 리스트
75955 Thread 예제를 컴파일 하는데, 에러가 발생 합니다. 뽀뽀중 1441 2020/08/25
75956     Re:Thread 예제를 컴파일 하는데, 에러가 발생 합니다. 빌더(TWx) 1577 2020/08/27
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.