출처: http://www.xeronichs.com/2017/02/vs2015-with-intel-pin-32.html



환경:


windows 7

Visual Studio 2015 Community

Pin 3.2


세팅



Win32 프로젝트



결과물이 DLL!


Release 모드로 변경


소스파일에서 src.cpp를 만든 후 


프로젝트 속성 


하나씩 설정



구성속성 - 일반 - 문자집합 - 멀티바이트 문자 집합 사용


구성속성 - 일반 - 전체프로그램 최적화 - 링크타임 코드생성 사용?


==========================================================================



구성속성 - C/C++ - 일반 - 추가포함 디렉터리


32비트

[]\source\include\pin;[]\source\include\pin\gen;[]\extras;[]\extras\components\include;[]\extras\crt;[]\extras\crt\include;[]\extras\crt\include\arch-x86;[]\extras\crt\include\kernel\uapi;[]\extras\crt\include\kernel\uapi\asm-x86;[]\extras\libstdc++\include;[]\extras\stlport\include;[]\extras\xed-ia32\include\xed;


64비트

[]\source\include\pin;[]\source\include\pin\gen;[]\extras;[]\extras\components\include;[]\extras\crt;[]\extras\crt\include;[]\extras\crt\include\arch-x86_64;[]\extras\crt\include\kernel\uapi;[]\extras\crt\include\kernel\uapi\asm-x86;[]\extras\libstdc++\include;[]\extras\stlport\include;[]\extras\xed-intel64\include\xed;


[]는 pin의 경로

[] = Z:\어쩌구저쩌구\pin-3.2-81205-msvc-windows




구성속성 - C/C++ - 전처리기 - 전처리기 정의


32비트

TARGET_IA32

HOST_IA32

TARGET_WINDOWS

__PIN__=1

PIN_CRT=1

__i386__


64비트

TARGET_IA32E

HOST_IA32E

TARGET_WINDOWS

__PIN__=1

PIN_CRT=1

__LP64__




구성 속성 - C/C++ - 코드 생성 - C++ 예외 처리 가능 - 아니요

구성 속성 - C/C++ - 코드 생성 - 런타임 라이브러리 - 다중 스레드(/MT)

구성 속성 - C/C++ - 코드 생성 - 보안 검사 - 보안 검사 사용 안함(/GS-)

구성 속성 - C/C++ - 코드 생성 - 예(/Gy) ???






구성 속성 - C/C++ - 언어 - 런타임 형식 정보 사용 - 아니요(/GR-)





구성 속성 - C/C++ - 명령줄 - 추가옵션 - /FIinclude/msvc_compat.h 



==========================================================================



구성 속성 - 링커 - 일반 - 추가 라이브러리 디렉터리 - 


32비트

[]\ia32\lib;[]\ia32\lib-ext;[]\ia32\runtime\pincrt;[]\extras\xed-ia32\lib;


64비트

[]\intel64\lib;[]\intel64\lib-ext;[]\intel64\runtime\pincrt;[]\extras\xed-intel64\lib;





구성 속성 - 링커 - 입력 - 추가 종속성 - 


32비트

pin.lib

pinvm.lib

xed.lib

kernel32.lib

ntdll-32.lib

c-static.lib

m-static.lib

os-apis.lib

stlport-static.lib

crtbeginS.obj



64비트

pin.lib

pinvm.lib

xed.lib

kernel32.lib

ntdll-64.lib

c-static.lib

m-static.lib

os-apis.lib

stlport-static.lib

crtbeginS.obj


구성 속성 - 링커 - 입력 - 모든 기본 라이브러리 무시 - 예






32비트

구성 속성 - 링커 - 고급 - 진입점 - Ptrace_DllMainCRTStartup%4012

구성 속성 - 링커 - 고급 - 기준 주소 - 0x55000000

구성 속성 - 링커 - 고급 - 이미지에 안전한 예외 처리기 포함 - 아니요(/SAFESEH:NO)


64비트

구성 속성 - 링커 - 고급 - 진입점 - Ptrace_DllMainCRTStartup

구성 속성 - 링커 - 고급 - 기준 주소 - 0xC5000000

구성 속성 - 링커 - 고급 - 이미지에 안전한 예외 처리기 포함 - 아니요(/SAFESEH:NO)



구성 속성 - 링커 - 명령줄 - 추가옵션 - /export:main



==========================================================================


빌드 - 성공 ! - release 폴더의 ~.dll을 사용!