Hola a todos,
sé que este foro es de sólo código y la cuestión que voy a plantear aquí trata en gran parte de una herramienta de desarrollo, pero sin embargo algunos conceptos creo que se pueden sacar también aparte.
En primer lugar estoy desarrollando una aplicación que tiene que utilizar la API RTC (Real Time Comunication) la cuál viene definida en los siguientes archivos:
Cabeceras: rtcoore.h, rtcoore.idl. (el archivo .idl sé que es un archivo de definición de interfaz, pero no tengo ni idea de qué hace ni para qué sirve, nisiquiera si me hace falta).
Librería a linkear: uuid.lib
Esta API es un objeto COM, cuya inicialización por ejemplo se haría de la siguiente forma (código sacado de microsoft):
_______________________________________________________
HRESULT hr = S_OK;
// RTC Initialization
// Note: Use the apartment threaded model because
// RTC applications are not thread safe.
::CoInitializeEx(NULL,COINIT_APARTMENTTHREADED);
// Create the RTC Client COM object.
IRTCClient *pIRTCClient;
hr = CoCreateInstance(
CLSID_RTCClient,NULL,
CLSCTX_INPROC_SERVER,
IID_IRTCClient,
reinterpret_cast<void **> (&pIRTCClient) );
// if (hr != S_OK) process error here.
// Initialize the RTCClient interface.
hr = pIRTCClient->Initialize();
// if (hr != S_OK) process error here.
________________________________________________________
El problema que tengo es el siguiente... esta aplicación la estoy desarrollando en "Embedded Visual C++" (es totalmente igual a "Visual C++" solo que para dispositivos móviles).
En el menú "Tools" -> "Options" en la pestaña de "Directories" incluyo para los archivo .h y .lib la ruta donde se encuentran, y en la ventana donde se encuentra el workspace y todos los archivos fuente, resources y de cabecera.. añado la librería uuid.lib (ésta también la tengo añadida en "Project" -> "Settings" en la pestaña de "Link" en "Object/Library modules").
Si compilo así la aplicación y la prueba me sale el siguiente error:
Linking...
InterfazExternaDlg.obj : error LNK2001: unresolved external symbol
_CLSID_RTCClientInterfazExternaDlg.obj : error LNK2001: unresolved external symbol
_IID_IRTCClientemulatorDbg/InterfazExterna.exe : fatal error LNK1120: 2 unresolved externals
Error executing link.exe.
Ahora lo que he hecho es probar añadiendo el archivo rtccore.idl al proyecto... y bueno... al probarlo me sale el siguiente error:
Creating Type Library...
rtccore.idl
oaidl.idl
objidl.idl
unknwn.idl
wtypes.idl
basetsd.h
ocidl.idl
oleidl.idl
control.odl
Error executing midl.exe.
InterfazExterna.exe - 1 error(s), 0 warning(s)
¿Qué es el archivo .idl? al ser un archivo de cabecera... ¿con utilizar el .h no valdría?
Como pueden ver tengo muchas dudas con esto de los objetos COM, su funcionamiento y cómo linkarlo todo para que funcione. A cualquier pequeña ayuda les estaría muy agradecido.
Aténtamente, y gracias de antemano por las respuestas:
Black_angel.