2011-04-26 5 views
0

나는 이제 하루에 batteling되었거나 필자 문제와 사람이 도움을 줄 수있을 궁금 메신저가 :ICollectionPtr COM

임에 COM을 통해 메시지를 큐에서 제거하는 ActiveMQ를-NMS를 사용하는 것을 시도하고있다

C++ 응용 프로그램 나는 소스를 빌드하고 RegAsm을 통해 어셈블리의 모든 유형을 내보내려면 'ComVisible'플래그를 재정 의하여 (이 문제와 '원자'클래스에 대한 경고를 받았지만 이것이 내가 직면 한 문제라고 생각하지 않습니다. 그 순간에).

RegAsm의 일부로 나는 C++ 클라이언트의 #import에서 사용하는 .tlb 파일을 생성했습니다. 그러나 컴파일하는 동안 다양한 오류가 나타납니다.

error C2146: syntax error : missing ';' before identifier 'Keys' 
error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 
error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 

본질적으로, 그것은 ICollectionPtr (및 다양한 기타) 같은 것들처럼 보이는 사용할 수 없습니다 : 상황이 좋아합니다. 누구든지이 문제를 해결하는 데 도움을 줄 수 있습니까? 기본적으로. NET ActiveMQ-NMS 어셈블리를 COM 호환 구성 요소로 등록한 다음 C++에서 사용하려고합니다. ...

답변

1

COM 및 NMS를 사용해야하는 다른 이유가없는 한, 왜 ActiveMQ-CPP 클라이언트 ? 그렇다면 COM의 모든 복잡성을 피할 수 있습니다. ActiveMQ-CPP는 here입니다.

+0

응답 해 주셔서 감사합니다. 물론 ActiveMQ-CPP를 사용하면 더 많은 의미가 있습니다. 그러나, 나는 vs2003 빌드에있는 클라이언트에서 그것을 사용해야하고, 내가 말할 수있는 한 사용할 수없는 언어 기능을 사용하기 때문에 사용할 수 없습니다. 말하자면, vs2008을 사용하여 activemq-cpp를 빌드했지만 라이브러리가 vs2003 클라이언트와 호환되지 않습니다. 임시 해결책은 activemq-cpp를 사용하고 모든 클라이언트가 사용할 수있는 COM 개체를 노출하는 COM EXE (2008을 통해 빌드)를 만드는 것입니다. 그러나 이것은 복잡성의 층을 추가합니다. –

관련 문제