본문 바로가기

프로그래밍/C-CPP

(17)
[VS2015] nuget package 오프라인 설치시 문제점. 인터넷이 연결되지 않은 개발환경에 nuget package 를 깔아서 테스트해 보는 상황이 발생. 인터넷 등을 참조하여 필요한 nupkg 를 다운로드 받고, 비주얼 스튜디오 누겟 패키지 관리자 콘솔에서 install-package 명령을 실행하였으나, 에러가 발생했다. PM> Install-Package cef.redist.x86 -Source nugetpackages'native,Version=v0.0'을(를) 대상으로 하는 'clr_cefbrowser' 프로젝트에 대한 'cef.redist.x86.3.2987.1597' 패키지의 종속성 정보를 수집하려는 중Install-Package : 'https://api.nuget.org/v3/index.json' 원본을 추가할 때 'System.Aggregat..
[VS] LINK : warning LNK4075: '/INCREMENTAL'이(가) '/LTCG' 사양으로 인해 무시됩니다. https://blogs.msdn.microsoft.com/vcblog/2013/10/29/the-visual-c-linker-best-practices-developer-iteration/ 에서 발췌하여 번역함. LINK : warning LNK4075: '/INCREMENTAL'이(가) '/LTCG' 사양으로 인해 무시됩니다. LINK : warning LNK4075: ignoring ‘/INCREMENTAL’ due to ‘/LTCG’ specification 링크타임 코드생성 (/LTCG , `L`ink-`T`ime `C`ode `G`eneration) 옵션은 링커에게 전체 프로그램 최적화를 하게 한다./LTCG 로 활성화되는 최적화의 흔한 예는 모듈간의 함수 인라인화이다. 많은 기타 링커 최적화..
DWORD PTR fs:[0] 는 무엇인가? https://answers.yahoo.com/question/index?qid=20070424201345AAXWrs7 질문: DWORD PTR fs:[0]? fs 는 무엇인가? DWORD PTR ds:[0] 도 본 적이 있다.ds 는 데이터 세그먼트부터의 오프셋인 것 같은데. ---답변: FS 는 IA-32 프로세서류의 또다른 세그먼트 레지스터이다.win32 환경에서는, 쓰레드의 TEB (Thread Environment Block)의 여러 아이템들을 가리키는 데 사용된다. FS[0] 은 SEH(Structured Exception Handler, 구조적 예외처리) 체인을 가리킨다. 프로그램은 FS[0] 을 새로운 SEH 구조를 가르키도록하여 기본 예외처리기가 아닌 예외처리기를 사용할 수 있다. 자세한..
[번역] COM 자동 초기화 자동 클린업 http://blogs.msmvps.com/gdicanio/2010/12/28/com-automatic-initialization-and-cleanup-and-text-to-speech/ COM 자동 초기화와 자동 클린업 CComPtr 인스턴스를 사용하는 COM 코드가 다음과 같다고 하자. {HRESULT hr = CoInitialize(NULL);// 반환값 확인. CComPtr sp1;CComPtr sp2;// 인터페이스 포인터로 작업 CoUninitialize(); } 이 코드에는 미묘한 버그가 있다. 문제는 CoUninitialize 가 CComPtr 파괴자 전에 실행된다는 점이다. 옳바른 방법은 CoUninitialize 가 모든 COM 인터페이스 포인터가 (자신의 래핑된 CComPtr 파괴자에..
[SO번역] zlib: `deflate` 함수와 `compress` 함수의 차이점은 http://stackoverflow.com/questions/10166122/zlib-differences-between-the-deflate-and-compress-functions zlib: `deflate` 함수와 `compress` 함수의 차이점은zlib: Differences Between the `deflate` and `compress` Functions 질문 : zlib의 deflate() 과 compress() 함수의 차이점은 무엇인가요?온라인 샘플을 훑어봤는데, 어떤 것은 deflate 를 쓰고, 다른 것은 compress 를 쓰더군요.어떤 상황에서 어떤 것을 쓸지 어떻게 결정하나요? What are the differences between the deflate() and compr..
CPP/STL const map 객체에 [key] 접근시 에러 #include #include #include int _tmain(int argc, _TCHAR* argv[]){std::map dict1({ { "AAA", { 1, 2, 0, 0 } },{ "B", { 2 } }});const std::map dict2({{ "abc", { 3, 3, 1, 0 } },{ "def", { 0 } }}); // okstd::vector v1 = dict1["AAA"]; // compile error!// ref : http://stackoverflow.com/questions/15614735/why-stdmapint-float-cant-use-operator-error-c2678// dict2 가 const 로 정의되어 있음.// [ 연산자는 자동으로 새로운 key, ..
[CPP] 포인터인자와 레퍼런스인자 함수 생성 asm 비교. 함수의 인자를 레퍼런스로 주었을 때와 포인터로 주었을 때, 생성되는 asm 코드는 어떻게 다를 지 궁금했다.매우 간단한 함수를 만들고, VS2008 에서 최적화 없이 asm 코드를 생성하여 비교하였다. 1. 소스 f1 은 레퍼런스도 포인터도 사용하지 않은 기본형을 그대로 인자로 준 함수. f2 는 모든 인자를 포인터로 넘긴 것, f3 은 레퍼런스로 인자를 넘긴 것이다. f2, f3 이 asm 으로 어떻게 해석되어 생성될 지 궁금했는데, 왼쪽이 f2 의 호출부분 (==== 바 위쪽) 과 f2 의 몸체. 오른쪽이 f3 의 호출부분과 몸체이다. asm 을 소스와 함께 생성했기 때문에, 비교하기 편리하고, 잘 살펴보면, 노랗게 다르다고 표시된 부분은 모두 원 소스 부분 뿐이다. 생성된 asm 코드 자체는 (호출..
[번역] (dll) __stdcall 함수와 GetProcAddress http://groups.google.com/group/microsoft.public.vc.language/browse_thread/thread/e5c9f986c51729dd From: "Kürþat" 제목 : (dll) __stdcall 함수와 GetProcAddress Subject: (dll) __stdcall functions and GetProcAddress Date: Thu, 7 May 2009 00:28:54 +0300 Message-ID: Newsgroups: microsoft.public.vc.language Hi, 아주 간단한 "int Add (int, int)" 함수를 익스포트 하는 간단한 dll을 만들었고, LoadLibrary 와 GetProcAddress 를 이용해서 그 함수를 ..