Sponsored Content
Top Forums Programming dlopen failing on library with statically linked dependencies Post 302433040 by Hodapp87 on Monday 28th of June 2010 09:33:27 AM
Old 06-28-2010
dlopen failing on library with statically linked dependencies

I am attempting to port a program from OS X to Linux. It's C++ & Qt Creator and I did the original Windows to OS X port, so I tried to make it as POSIX-compliant as possible; the OS X port works well, and the Linux port builds and starts (it's on Ubuntu 9.10) but has some issues running.
The application has a plugin system. Plugins are built along with the main executable, and then are loaded at startup via dlopen. One of these plugins links to VTK and the only thing setting this apart from the various other 3rd-party dependencies is that VTK here is statically linked. When I attempt to dlopen this plugin, or any plugin which depends on that plugin, dlopen throws an error like this:
Quote:
./Plugins/libVirtualCameraImaged.so.1: undefined symbol: _ZN29vtkInformationStringVectorKeyC1EPKcS1_i
The part that perplexes me is that the plugin code itself can compile and link without this error; if I had forgotten a library at compile time, it would never have linked. It's not dynamically linked with VTK, so LD_LIBRARY_PATH is irrelevant and I can't use 'ldd' to see where it's trying to find it. Looking at the build output, I see the "-L/usr/local/lib/vtk-5.6" and "-lvtkCommon" telling me that it has the right path to the right library, and I can look in the output of 'nm libvtkCommon.a' and see the aforementioned symbol:
Quote:
000000d6 T _ZN29vtkInformationStringVectorKeyC1EPKcS1_i
...so I know it is linking with a library that defines that undefined symbol.

Does anyone have any idea what I could be doing wrong in this build to get symptoms like this?
 

6 More Discussions You Might Find Interesting

1. Programming

HOw to load dynamic lib from a statically linked program ?

I need to load a dynamic library from a statically linked program. Is there a way without recompiling my program. when i try to do that my program just crashes. If not possible, how can I avoid crashing the program when i try to load the dynamic lib, again without recompiling. If my... (1 Reply)
Discussion started by: disclaimer
1 Replies

2. Programming

Can't dlopen() a library containing Thread Local Storage

Hi, I have a small test c program which tries to dlopen a shared library(libjvm.sl). But i get error as "Can't dlopen() a library containing Thread Local Storage" My program is as below when i run the program i get error any pointers why the error?? I am using hp-ux . The... (1 Reply)
Discussion started by: shriashishpatil
1 Replies

3. Programming

how to use a dynamical linked library in C++ program in Linux

I have a dynamically linked library, providing some functions needed in my project. I have successfully imported it into my VC ++ 6.0 project. Now, i am translating the project into pure C++ (such as avoiding using MFC classess) in Linux box. Does anyone know if it makes sense to try to use... (2 Replies)
Discussion started by: cy163
2 Replies

4. UNIX for Advanced & Expert Users

ldd shows the dependencies of library- oracle8i

Hi, ldd -d fgs_bin/la_daemon_flex_pipe libclntsh.so.8.0 => /oracle/app/oracle/product/8.1.7/lib/libclntsh.so.8.0 libnsl.so.1 => /usr/lib/libnsl.so.1 libsocket.so.1 => /usr/lib/libsocket.so.1 libdl.so.1 => /usr/lib/libdl.so.1 ... (3 Replies)
Discussion started by: shafi2all
3 Replies

5. Programming

Dynamic library load with dlopen

Hi, I created two library libsum.so and libproduct.so. In the libproduct.so is defined function "product" that use function "sum" defined in libsum.so. So libproduct depends on libsum. In main function I called product function by a dlopen request. Unfortunaly, when I execute program I have an... (5 Replies)
Discussion started by: shade82
5 Replies

6. AIX

Create shared libs on AIX (with certain libs which are statically linked)

I want to create a shared lib with certain libs statically linked to it. I can generate a fully shared lib as follows: gcc -maix64 -DHAVE_CONFIG_H -I. -I./src -DHAVE_OPENSSL -I/usr/include/openssl -I/usr/include -I/usr/include/apr-1 -D_LARGEFILE64_SOURCE -I/usr/java8_64/include -shared -o... (0 Replies)
Discussion started by: amandeepgautam
0 Replies
XvGrabPort(3)                                                     libXv Functions                                                    XvGrabPort(3)

NAME
XvGrabPort - lock port for exclusive use by client SYNOPSIS
#include <X11/extensions/Xvlib.h> int XvGrabPort(Display *dpy, XvPortID port, Time time); ARGUMENTS
dpy Specifies the connection to the X server. port Defines the port to be grabbed. time Specifies the request timestamp. DESCRIPTION
XvGrabPort(3) grabs a port. Once a client grabs a port, only that client can make video requests to that port. If the time is before the current port time, the XvGrabPort request is ignored and XvInvalidTime is returned. If the port is already grabbed by another client, XvAlreadyGrabbed is returned. Otherwise it returns a status of Success. The port time is updated when the fol- lowing requests are processed: XvGrabPort(3), XvUngrabPort(3), XvPutVideo(3), XvPutStill(3), XvGetVideo(3), XvGetStill(3). If the port is actively processing video for another client, the video is preempted, and an XvVideoNotify event with detail XvPreempted is generated for its drawable. RETURN VALUES
[Success] Returned if XvGrabPort(3) completed successfully. [XvInvalidTime] Returned if requested time is older than the current port time. [XvAlreadyGrabbed] Returned if the port is already grabbed by another client. [XvBadExtension] Returned if the Xv extension is unavailable. [XvBadAlloc] Returned if XvGrabPort(3) failed to allocate memory to process the request. DIAGNOSTICS
[XvBadPort] Generated if the requested port does not exist. SEE ALSO
XvUngrabPort(3), XvVideoNotify(3) X Version 11 libXv 1.0.7 XvGrabPort(3)
All times are GMT -4. The time now is 01:57 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy