CLR 호스팅으로 실험하고 있습니다 (아마도 시도 할 것이지만 지금은 mono를 사용하지 마십시오). 나는 (천국 '을 가서 그렇게 철저하게 그 문서에 설명이 아니다으로CLR 호스팅 네이티브 - COM 인터페이스, 해결되지 않은 외부 기호 _CStdStubBuffer_Release @ 4
그러나 http://www.lenholgate.com/blog/2010/07/clr-hosting---a-flexible-managed-plugin-system-part-1.html
, 나는, COM 자체에 약간의 문제가있어, 나는 배우고 : 기본적으로, 나는이 다음 해요 이전에 COM에서 연주 해왔음).
는 I는 인터페이스를 정의했습니다 :
import "unknwn.idl";
[
object,
uuid(55d96f88-9633-4ad7-b9de-1a546ea73307),
helpstring("INative interface"),
pointer_default(unique)
]
interface INative : IUnknown
{
HRESULT Write(BSTR s);
}
[
object,
uuid(74eeeaaa-d73c-436e-b52d-5c8a972ce60a),
helpstring("ITestManager Interface"),
pointer_default(unique)
]
interface IManagedHost : IUnknown
{
HRESULT Init(INative* native);
}
을 그리고 내 기본 프로젝트에 파일을 생성 포함. 그러나 링커에서 확인할 수 없기 때문에 실행 파일을 빌드 할 수 없습니다. [email protected]
. RpcRT4.lib
은 연결되어 있지만 dumpbin rpcrt4.lib /all | grep _CStdStubBuffer_Release
을 실행했으며 해당 라이브러리에서 내 보낸 것과 같은 것이 없습니다. CStdStubBuffer_DebugServerRelease
입니다. 그래서, 그것이 존재하지 않아야한다고 가정한다면, 그 방법을 정확히 참조하는 것이 문제입니까?
좀 더 조사를했고, 나는이 방법은 IDL 도구에 의해 생성되는 .c 파일을 통해 참조하는 것을 발견했습니다
const CInterfaceStubVtbl _INativeStubVtbl =
{
&IID_INative,
&INative_ServerInfo,
4,
0, /* pure interpreted */
CStdStubBuffer_METHODS
};
및 CStdStubBuffer_METHODS는 윈도우 SDK v7.0A
의 RpcProxy.h
에 정의되어 있습니다 : http://msdn.microsoft.com/en-us/library/windows/desktop/ms764247%28v=VS.85%29.aspx : 그것은 다른 약간 비록 실제로 그 CStdStubBuffer_Release 방법을 원하는
#define CStdStubBuffer_METHODS \
CStdStubBuffer_QueryInterface,\
CStdStubBuffer_AddRef, \
CStdStubBuffer_Release, \
CStdStubBuffer_Connect, \
CStdStubBuffer_Disconnect, \
CStdStubBuffer_Invoke, \
CStdStubBuffer_IsIIDSupported, \
CStdStubBuffer_CountRefs, \
CStdStubBuffer_DebugServerQueryInterface, \
CStdStubBuffer_DebugServerRelease
.
그럼 다른 라이브러리를 연결해야합니까?
감사합니다. 프록시 파일이 일부 공유 dll에 있어야한다고 읽었지만 호스트 시나리오에이를 적용하는 것이 확실하지 않았습니다. – Bartosz
proc 활성화 및 복잡한 COM 스레딩 모델 항목에 프록시 기능이 필요합니다. CLR 호스팅 시나리오에는이 중 어느 것도 필요하지 않으므로 해당 파일을 무시할 수 있습니다. –