본문 바로가기

programing/C++56

DLL 사용시 내부 함수 목록 확인 및 lib 생성, 명시적 연결 - dll 내부 함수 목록 확인 > Visual Studio에서 TOOLS 메뉴의 Visual Studio Command Prompt 실행 > dumpbin /export [라이브러리].dll > dll의 내부 함수 목록을 알 수 있음 - dll 내부 함수 목록으로 lib 생성하기 > def 파일 생성 및 dumpbin에서 얻은 목록 작성 LIBRARY [라이브러리].dll EXPORT Func1 Func2 ... > lib /def:[라이브러리].def /machine:x86 > 생성됨 https://msdn.microsoft.com/ko-kr/library/d91k01sh.aspx - def 파일을 프로젝트 설정->링커->입력->모듈정의파일에 설정하면 알아서 만들어짐 cf. __declspec()은 .. 2017. 2. 1.
인라인 함수와 템플릿 - 인라인 함수> 대체적으로 헤더 파일에 들어 있어야 함> 대부분의 빌드 환경에서 인라인을 컴파일 도중에 수행하기 때문> 인라인 함수 호출을 그 함수의 본문으로 바꿔치기 하려면, 일단 컴파일러는 그 함수가 어떤 형태인지 알고 있어야함(물론, 링크 도중에 인라인을 수행하는 빌드 환경도 있음 ex) 닷넷 공통 언어 내부 구조(Common Language Infrastructure : CLI)에 기반한 닷넷 관리 환경(예외일 뿐, 규칙에는 포함 안됨)) - 템플릿> 대체적으로 헤더 파일에 들어있어야 함> 템플릿이 사용되는 부분에서 해당 템플릿을 인스턴스로 만드려면 그것이 어떻게 생겼는지 컴파일러가 알아야 하기 때문(인라인 함수와 마찬가지로 이 부분도 모두 그런 것은 아님. 어떤 빌드 환경은 링크 도중에 템플릿.. 2017. 1. 25.
음성 채팅 구현 1. 마이크를 사용하여 녹음 - mmsystem.h 에 녹음 및 사운드 출력 이용 - directx sound를 사용해도 무방 - portaudio를 이용하면 편하다. 2. 음성 압축 코덱으로 인코딩 - 대충 찾아보니 > G.723.1, G.729.A, GSM610, True Speech, PCM (LAN or High speed network area) > 유료 코덱을 쓰기엔... > PCM은 일반적으로 로컬에서 많이 사용되기 때문에 음질을 고수준으로 올릴 필요 있음 - speex > http://www.speex.org/ : BSD 라이센스 - Opus> speex 보다 좋다고 한다. cf. 음성데이터를 인코딩, 디코딩 하기 위해선 어느정도 음성 데이터 지식이 필요 - 음성 데이터 추출시데이터 = 채.. 2017. 1. 20.
[Modern C++] RValue Reference - C++98/03에서는 추상화와 효율성을 같이 가려가려다 불필요한 복사가 만들어짐> ex. vector에서 재할당, string객체 간 결함 - 불필요한 복사를 방지하는 기능 : RValue Reference (우측 값 참조) cf. 좌측 값, 우측 값> 좌측값 : *ptr, ptr[index], ++x> 우측값 : 식이 끝나는 시점에서 사라져 버리는 임시 값, 상수, x+y, std::string("C++"), (&로 받는) 주소값(상수) - LValue Reference> '&'를 사용한 참조cf. 주소값은 변수에 들어있는 값만 참조를 이용할 수 있다. - RValue Reference>'&&'를 사용한 참조 int nCount;int& lrefValue1 = nCount; ---- 문제 없음int.. 2016. 12. 29.