반응형
CFile로 CStdioFile처럼 간단히 String 을 Write할 수 있다

CFile file(strPath,  CFile::modeCreate | CFile::modeWrite);
CArchive ar (&file, CArchive::store); 
ar.WriteString("Something Something\r\n");
ar.Close();
file.Close();
반응형
반응형
반응형
반응형
Visual Studio(2008) 프로파일링이란 무엇인가?
http://blog.naver.com/process3?Redirect=Log&logNo=20046384258

Visual Studio 프로파일러를 사용한 응용프로그램 병목 지점 찾기







VS2010: Investigating a sample profiling report (Function Details)

VS2010: New Profiler Summary Page

**************************************************
*** 아래 자료에 ko-kr로 고치면 한글로 나옴 ****

Profiling Tools Performance Session Overview (VS2010)

Understanding Sampling Data Values in Profiling Tools

Understanding Instrumentation Data Values in Profiling Tools (VS2010)

Beginners Guide to Performance Profiling (VS2010)

Analyzing Profiling Tools Data

Analyzing Application Performance by Using Profiling Tools

(순서)
(Unmanaged) Profiler in VS2005 Team-Edition
반응형
반응형
아래를 보고 appwzkor.dll파일을 copy해준다
http://cafe.naver.com/mynews.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=1533

C:\Program Files\Microsoft Visual Studio\Common\MSDev98\Bin\IDE
C:\Program Files\Microsoft Visual Studio\VB98\Wizards
그런데 왜 이 두 파일이 다르지?

반응형

'Tech > 컴퓨터활용 Tips' 카테고리의 다른 글

안드로이드 개발 관련 Link  (0) 2010.12.02
Bugzilla 서버 이전 및 Upgrade  (0) 2010.11.25
Windows7 에서 AHCI변경  (0) 2010.07.20
[config] Vim 환경설정 .vimrc 내용  (0) 2010.02.25
.a library를 .lib로 변환하기  (0) 2010.02.25
반응형
만약 IDE로 설치했다면 AHCI로 변경하면 부팅중 Blue Screen이 뜨거나 reset되버릴 것이다.
이때는 regedit에서 
HKLM\SYSTEM\CurrentConsolSet\Services\mahci 에서 start 값을 0으로 변경(3값으로 되어있을 것임)

CMOS에서 AHCI로 바꾼다음 booting한다.

booting후 Intel 드라이버를 설치한다.

반응형
반응형


http://blog.naver.com/process3/20099016789
반응형
반응형
아래같은 Memory Leak이 발생했을 경우

Detected memory leaks!
Dumping objects ->
D:\project\XXXX.cpp(287) : {1189591} normal block at 0x02818B60, 4 bytes long.
 Data: <    > 00 00 00 00 
array_s.cpp(113) : {1189587} normal block at 0x02818A68, 4 bytes long.
 Data: <Dw} > 44 77 7D 02 
D:\project\XXXX.cpp(322) : {1189585} client block at 0x027D7790, subtype 0, 20 bytes long.
a CStringArray object at $027D7790, 20 bytes long
strcore.cpp(118) : {1189584} normal block at 0x027D7738, 19 bytes long.
 Data: <            129 > 01 00 00 00 03 00 00 00 06 00 00 00 31 32 39 00 

아래 코드를 작성해 놓고 해당 code 값을 설정해 놓으면 debug실행시 
할당하는 시점에 user break가 걸린다.
어떤 할당을 한것이 해제가 안되었는지 찾는데 도움이 된다.

#include <crtdbg.h>
_CrtSetBreakAlloc(1189591);
_CrtMemDumpAllObjectsSince(0);
반응형
반응형
반응형
반응형

IDL 파일에 사용자지정 구조체 사용하기[데브에서 퍼옴] [Tip]



http://blog.hanafos.com/jaxal/6

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

구조체만 넘기는 방법

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

 

1. IDL파일에 구조체를 정의하세요

 

    typedef

    [uuid(GUID직접생성해서 넣기)] //직접id생성

    struct myUDT

    {

          [helpstring("no")]long a1;

          [helpstring("string")]BSTR pbstr;

    } myUDT;

 

2. 구조체 입출력 인터페이스 함수 정의

               [id(4), helpstring("method GetUDT")] HRESULT GetUDT([in,out] myUDT *p1);

 

3. 코드를 작성

STDMETHOD(GetUDT)(/*[in,out]*/ myUDT *p1);

STDMETHODIMP CDWMath::GetUDT(myUDT *p1)

{

    //ATL에서 정의 된 구조체를 사용하는 예제

    // 한개의 구조체를 입출력하는 경우

 

    USES_CONVERSION;

 

    char str[255];

    p1->a1 = 100;

    strcpy(str , OLE2T(p1->pbstr));

    //::AfxMessageBox ( str );

 

    MessageBox(NULL,str,"Test",MB_OK);

 

    return S_OK;

}

 

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

구조체 배열을 넘기는 방법

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

 

1.인터페이스 함수 정의

      [id(5), helpstring("method GetUDTArray")] HRESULT GetUDTArray([in,out]SAFEARRAY (myUDT)*uArray);

 

2. 코드작성

STDMETHOD(GetUDTArray)(/*[in,out]*/SAFEARRAY **uArray);

STDMETHODIMP CDWMath::GetUDTArray(SAFEARRAY **uArray)

{

    //구조체 배열을 통한 데이터 출력

    // VB에서는 선언만 하고 C++에서 메모리 할당함

 

    long startNo,lElements;

    HRESULT lResult;

 

 

    // 구조체에 UUID를 설정하고 컴파일 했으나 이상하게도

    // GUID_myUDT가 생성이 않되어 직접 코딩 해줌....

 

    static const GUID GUID_myUDT =

    { 0x직접생성해서넣기, 0xc336, 0x4c7f, { 0x80, 0xab, 0x2f, 0x6a, 0xa2, 0x3c, 0x8c, 0x24 } };

 

    HRESULT hresult,hr;

 

    {

        ITypeInfo* pTypeInfo = NULL;

        ITypeLib*  pTypelib = NULL;

 

        IRecordInfo* pRecInfo = NULL;

 

        hr = LoadRegTypeLib(LIBID_MATH4VBLib , 1, 0, GetUserDefaultLCID(), &pTypelib);

                                                   //현재 코딩중인 IDL파일의 ID로 변경하시요.

 

        hr = pTypelib->GetTypeInfoOfGuid(GUID_myUDT, &pTypeInfo);

        hr = GetRecordInfoFromTypeInfo(pTypeInfo, &pRecInfo);

 

        pTypeInfo->Release();

        pTypelib->Release ();

 

        SAFEARRAYBOUND bounds = {4, 0};

        *uArray = SafeArrayCreateEx(VT_RECORD, 1, &bounds, pRecInfo);

 

        if( FAILED(SafeArrayAllocData(*uArray)))

        {

           SafeArrayDestroyDescriptor(*uArray);

           return S_OK;

        }

    }

 

    myUDT *pArray;

    SafeArrayAccessData(*uArray, (void**)&pArray);

    for(int i=0; i<4; i++)  

    {

        pArray[i].a1 = i ;

        pArray[i].pbstr = L"Test";

    }

    SafeArrayUnaccessData(*uArray);

 

    return S_OK;

}

 


반응형
반응형


두개의 오브젝트가 공통으로 사용하는 IDL 이 있을때 클라이언트에서 타입 라이브러리 사용 시 redefinition error 처리 방법

이 문서는 이전에 다음 ID로 출판되었음: KR601178

현상

두개의 오브젝트 AObject 와 BObject 가 각각 자신의 타입라이브러리를 갖고 있으며 AObject 와 BObject 의 IDL 파일에 공통적으로 사용되는 IDL 파일이 있는경우 AObject 와 BObject 를 모두 사용하는 클라이언트가 다음과 같이 타입라이브러리를 import 하면
#import	"..\bobjprj\bobjprj.tlb" no_namespace
#import	"..\aobjprj\aobjprj.tlb" no_namespace
				
다음과 같은 오류 메시지가 나온다.
e:\works\tlbguide\client\debug\aobjprj.tlh(55) : error C2011: 
'tagNewType' : 'struct' type redefinition

원인

aobjprj.idl 과 bobjprj.idl 파일이 공통으로 사용하는 자료구조인 NewType 을 동시에 import 하였기 때문.
// datatype.idl

typedef struct tagNewType{
	long	lElement;
}NewType;

// aobjprj.idl : IDL source for aobjprj.dll
//

// This file will be processed by the MIDL tool to
// produce the type library (aobjprj.tlb) and marshalling code.

import "oaidl.idl";
import "ocidl.idl";
import "..\include\datatype.idl";


// bobjprj.idl : IDL source for bobjprj.dll
//

// This file will be processed by the MIDL tool to
// produce the type library (bobjprj.tlb) and marshalling code.

import "oaidl.idl";
import "ocidl.idl";
import "..\include\datatype.idl";
		

해결 방법

두 오브젝트를 사용하는 클라이언트는 타입라이브러리를 import 할때 exclude() 문을 사용하여 NewType 이 한번만 import 되도록 지시한다.
#import	"..\bobjprj\bobjprj.tlb" no_namespace
#import	"..\aobjprj\aobjprj.tlb" no_namespace exclude("tagNewType")
				

본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft Visual C++ 6.0 서비스 팩 5
키워드: 
KB601178
반응형

+ Recent posts