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

C++빌더 팁&트릭
C++Builder Programming Tip&Tricks
[866] #pragma link 에 path 넣기.
김태선 [cppbuilder] 13305 읽음    2009-03-03 01:34
C++빌더에서  프로젝트에 포함되어 있지 않은 obj 나 lib를 링크해서 프로젝트 결과물 파일을 생성할 때
링크를 위해 다음과 같은 의사 명령을 사용합니다.

#pragma link "obj 또는 lib"
또는
#pragma comment(lib, "obj 또는 lib")

이 2줄은 완전히 같은 pragma 문장입니다.
둘 중 땡기는 것으로 쓰면 됩니다.
볼랜드의 C++빌더 개발자들은 뭔가 어색한 표현법인  #pragma comment 대신
직관성이 높은 #pragma link 표현을 도입했습니다.
#pragma comment 는 VC에서도 동일하게 사용할 수 있는 pragma 문이고
#pragma link 는 빌더에서만 쓸수 있는 문장입니다.


그러면 예를 들어
프로세스의 정보를 얻기 위해 CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, dwPID); 등의
함수를 써야 한다면
#include <Tlhelp32.h>
를 해야 합니다.
또한 빌더의 lib/Psdk/psapi.lib 를 프로젝트에 포함하여 프로세스 관련 함수가 링크되도록 해야 합니다.

그러면 psapi.lib를 프로젝트에 포함하는 방법은 몇가지 있습니다.

방법 1. 탐색기에서 psapi.lib를 드래그해서 프로젝트 매니저에 놓으면 프로젝트 파일 리스트에
psapi.lib가 포함되니 간단히 해결됩니다.

방법 2. 소스 중에 패스가 없는
#pragma link "psapi.lib"
를 포함하고, Project 옵션에서 Library Path 에 $(BCB)/lib/psdk 를 추가하면 역시 쉽게 해결 됩니다.

방법 3. 소스 중에 패스가 있는
#pragma link "[path]psapi.lib"
를 지정하여 해결할 수 있습니다. 이 방법은 프로젝트 옵션에 라이브러리 패스를 따로 추가하지 않아도 됩니다.


그런데 문제는 3번째 방법에서 path 지정을 어떻게 하느냐 인데...
신성이 살아 있는 분들은 한 10 - 20분이면 금방 해결 하는데,
저 같은 사람은 한 참을 헤맬뿐 아니라, 그냥 방법 1,2 가 있으니 3번 방법은 구글링해도
안나오니 깔끔?하게 포기합니다.
왜 Help 에는 이 문제에 대한 언급이 없을까 하고...

하지만 3번 방법에 path를 넣는 것은 의외로 간단합니다.
즉 컴파일해서 링크할때 어떤 디렉토리가 기준인가만 알면 됩니다.
빌더가 설치되어 있는 lib 폴더도 Library path로 찾게끔 지정되어 있으니 찾는 것 뿐
디폴트 컴파일 폴더는 프로젝트 파일이 있는 곳입니다.
즉 상대 패스가 있으면 현재 프로젝트가 있는 곳을 기준으로 찾는다는 것입니다.
절대 패스가 있다면 그 절대 패스가 위치한 곳을 찾게 됩니다.


가령 lib 폴더 있는
#pragma link "indy60.lib" 
같은 파일은 위처럼 패스 없이 지정 가능하닌까 psapi.lib는
#pragma link "psdk/psapi.lib" 
식으로 하면 될거라 기대는, 컴파일러가 전혀 들어주지 않습니다.

위와 같은 경우는 아래처럼 path를 몽땅 지정해 주어야 합니다.
#pragma link "c:/progra~1/borland/cbuilder6/lib/psdk/psapi.lib"
또는
#pragma comment(lib, "c:/progra~1/borland/cbuilder6/lib/psdk/psapi.lib")

이는 절대패스를 기재해야 하므로,
빌더를 다른 곳에 설치하면 위 path도 수정해주어야 합니다.
가장 바람직해 보이는 것은 1 또는 2번 방법입니다.

하지만 가끔 이렇게 패스를 기재하는 것이 쓸모가 있기 때문에 알아두는 것도 좋습니다.
알면 알수록 프로그래밍의 자유도가 높아지죠.

그럼..
장성호 [nasilso]   2009-03-03 03:07 X
고맙습니다.

근데.. 네임테그를 등록하셨네요..
왠지 잘생겨 보입니다.
김태선 [cppbuilder]   2009-03-03 03:37 X
^^;
그냥 평범한 얼굴입니다.

+ -

관련 글 리스트
866 #pragma link 에 path 넣기. 김태선 13305 2009/03/03
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.