C
Also der Anfang der tlh sieht so aus:
// Created by Microsoft (R) C/C++ Compiler Version 14.00.50727.762 (b9652826).
//
// C:\DOKUME~1\***\LOKALE~1\Temp\sharedmem.tlh
//
// C++ source equivalent of Win32 type library C:\SharedMem\SharedMem.tlb
// compiler-generated file created 03/23/10 at 00:55:06 - DO NOT EDIT!
//
// Cross-referenced type libraries:
//
// #import "C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\mscorlib.tlb"
//
#pragma once
#pragma pack(push, 8)
#include <comdef.h>
namespace SharedMem {
//
// Forward references and typedefs
//
struct __declspec(uuid("7cd071e9-56f0-4e7a-b261-622c2bcbb44e"))
/* LIBID */ __SharedMem;
enum Bits;
enum Bits2;
enum Bits3;
(...)
Was ich versucht habe ist dann folgendes:
LPTYPELIB pTL;
hr = LoadRegTypeLib(__uuidof( SharedMem::__SharedMem), 2, 1,GetUserDefaultLCID() , &pTL);
Das funktioniert inzwischen auch, der Fehler lag in der Versionsnummer. In der Assembly ist die Version 1.2.0.0 eingetragen. Warum ich dann bei wVerMajor eine 2 eintragen muß verstehe ich zwar nicht, aber gut. Der nächste Schritt:
LPTYPEINFO pTI;
hr = pTL->GetTypeInfoOfGuid(__uuidof( SharedMem::OptionSelect ), &pTI);
funktioniert auch, aber an der entscheidenden Stelle:
IRecordInfo* pRI;
hr = GetRecordInfoFromTypeInfo( pTI, &pRI );
bekomme ich die Fehlermeldung 'Altes Format oder ungültige TLB'. Eine Suche ergab das es wohl etwas mit der LCID zu tun hat aber alle Versuche da etwas anderes einzutragen schlugen bis jetzt fehl. An dieser Stelle bin ich mal wieder Ratlos