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

C++빌더 Q&A
C++Builder Programming Q&A
[20583] VC++로 작성된 DCOM을 C++빌더에서 사용시 문제점입니다. [산굼부리]
산굼부리 [hafa] 1323 읽음    2002-08-01 18:09
전에 한번 글을 올렸는데 아직 해결이 안되서 다시 올립니다.

DCOM입니다.
서버는 VC++6.0으로 작성되어 DCOM 서버에 올려진 상태입니다.
클라이언트는 C++빌더로 작성하고 있으며
서버의 인터페이스를 얻는데 계속 실패하고 있습니다.
CoCreateInstanceEx까지는 잘 진행됩니다.
(<--1, <--2을 막은 후 리턴된 hr의 결과를 보면.. 성공함)

그러나 아래의 <---1, <----2을 막지 않으면
[Linker Error] Unresolved external '__stdcall _com_issue_error(long)' referenced from D:\BORLAND\TMS1\UNIT1.OBJ
에러가 뜹니다.
이와 같은 에러는 보통 C++ Builder와 VC++의 링커 네이밍 규칙이 다를때 나오는 에러로 알고 있는데... 하지만 이 문제 때문에 COM을 사용한건데 이런 에러가 뜨니... 무엇이 문제인가요?

"p"를 얻는데 성공해야 그 다음 작업을 할텐데... 부탁합니다.

#import "Smart.tlb"
#include "Smart_i.c"
...
중략
...

    HRESULT hr ;
    memset(&svrinfo, 0, sizeof(svrinfo));

    CoInitializeSecurity(NULL, -1, NULL, NULL,        RPC_C_AUTHN_LEVEL_NONE, RPC_C_IMP_LEVEL_IDENTIFY, NULL, EOAC_NONE, NULL);

    svrinfo.dwReserved1 = 0;
    svrinfo.dwReserved2 = 0;
    svrinfo.pwszName = L"ip주소";
    svrinfo.pAuthInfo = NULL;
   
    psvrinfo = &svrinfo;

    ICSmartPtr p;

    MULTI_QI qi[1] ;
    qi[0].pIID    =    &IID_ICSmart;
    qi[0].hr    =    0;
    qi[0].pItf    =    NULL;

    try{

        hr = ::CoCreateInstanceEx(
                    CLSID_CSmart,
                    NULL,
                    CLSCTX_ALL,
                    psvrinfo,
                    1,
                    &qi[0]);

        if(FAILED(hr))
        {
            ShowMessage("Fail");
                          _com_issue_error(hr); <---------- 1 이거 안 막으면 에러남
            return;
        }
        else
        {
            ShowMessage("Success");
        }
// 아래의 것이 안되면 도대체 어떻게 해야 p값을 얻을 수 있는 건가요?
        p = qi[0].pItf;   <------------------------ 2 이것도 안 막으면 에러남

    }
    catch(_com_error& e)
    {
        AnsiString szMsg= "에러가 발생\n";
                 szMsg += e.ErrorMessage();
        ShowMessage(szMsg);
        return;
    }
   
    ...
    생략

+ -

관련 글 리스트
20583 VC++로 작성된 DCOM을 C++빌더에서 사용시 문제점입니다. [산굼부리] 산굼부리 1323 2002/08/01
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.