creating a dll in Qnx multimedia

Hi,

I have made an “.so” for multimedia filters such as parser and decoder. (i.e). libmp3parser.so and mibmp3decoder.so respectively. I am able to link those filters statically.

I dont know how to link those .so’s dynamically.
(i.e). How to make the multimedia library(lib/dll/mmedia) aware of those two new .so’s.

Please somebody help me on this.

Thanks in advance.
Best Regards,
Thilaga

You must load the .so module using dlopen() on your client application

If you want to dynamically link your .so, you just do it from Makefile with -B dynamic and -l <your_lib>. This is to link dynamically. The .so symbols will remain unreferenced until the program runs. When you run the program dynamically linked against your .so, the runtime linker will resolve all unreferenced symbols just before the first line of code is executed and the runs. (it is important here LD_LIBRARY_PATH environment variable)

If you need to load your object in runtime (this is after your program starts and execute some code, maybe read from a configuration file wich shared object it needs, then yes: you should use dlload). But this is one step further.

One thing is to link dinamically your shared object, another one is to augmenting code at runtime (dlopen).

You should decide, what do you really need.

You should read this:
qnx.com/developers/docs/6.3. … h/dll.html

I hope this helps:

Regards,
JM

Thanks JM. In multimedia filters, the procedure is different.

In writing multimedia filters or plugins, there is a code snippet which exports our .so as DLL to /lib/dll/mmedia. The below code snippet should be there in our plugin code.

If VARIANT_DLL is defined in the code, it links dynamically, or else it links statically to our application provided if two more lines are added in the application.

#ifdef VARIANT_DLL
AOInterface_t interfaces[] =
#else
AOInterface_t mpegv_decoder_interfaces[] =
#endif
{
{ “Name”,1,“mpegv_decoder” },
{ “Version”,MM_VERSION,0 },
{ “AODeConstructor”,AODECONSTRUCTOR_VERSION,&media_filter
},
{ “MediaInput”,MM_INPUT_VERSION,&media_input },
{ “MediaOutput”,MM_OUTPUT_VERSION,&media_output },
{ “MediaSeeker”,MM_SEEKER_VERSION,&media_seeker },
{ “MediaControl”,MM_CONTROL_VERSION,&media_control },
{ “AOFormatInspector”,AOFORMATINSPECTOR_VERSION,&format_inspector
},
{ 0,0 }
};

For more details , please refer the below link.
qnx.com/developers/docs/6.3. … lters.html

Warm Regards,
Thilaga