Calling a C library function from within C++

G

Glenn C. Rhoads

I'm having a problem calling a C function from a publicly available
library file. To get the code to compile, I had to declare the
function as an external C function as follows.

extern "C" lib_function(....);

But when I run my C++ program, I get a segmentation fault in one
of the library functions (not the function I directly called but
one a few levels down in the calling hierarchy). According to
the user manual provided with the library, I'm passing in the
arguments correctly and I've allocated space for the arrays being
passed (each argument is either an integer or an array of integers),
hence I suspect the problem has something to do with the fact that
I'm calling a C function from within C++. (the authors claim that
the C code has no known bugs).

Any ideas on what the problem could be?

Note that I am using the gcc/g++ compiler on UNIX. In case you're
interested, the library package I'm using is called HMETIS and is
available at http://www-users.cs.umn.edu/~karypis/metis/

Also if you want to respond via email, then send your message to
rhoads <at> paul <dot> rutgers <dot> edu (the yahoo.com address
is bogus).
 
V

Victor Bazarov

Glenn said:
I'm having a problem calling a C function from a publicly available
library file. To get the code to compile, I had to declare the
function as an external C function as follows.

extern "C" lib_function(....);

I trust you don't have the dots in the actual code.
But when I run my C++ program, I get a segmentation fault in one
of the library functions (not the function I directly called but
one a few levels down in the calling hierarchy).

Not an unusual thing at all.
According to
the user manual provided with the library, I'm passing in the
arguments correctly

You ought to say "according to my reading of the manual".
and I've allocated space for the arrays being
passed (each argument is either an integer or an array of integers),
hence I suspect the problem has something to do with the fact that
I'm calling a C function from within C++. (the authors claim that
the C code has no known bugs).

Any ideas on what the problem could be?

Nope. Run it under a debugger. Let it crash and analyse the contents
of the variables. If you can find the source code for the library,
build it again with debugging information, and debug it.
Note that I am using the gcc/g++ compiler on UNIX. In case you're
interested, the library package I'm using is called HMETIS and is
available at http://www-users.cs.umn.edu/~karypis/metis/

Post the short version of how you use it (unless you manage to find
the error before that).

Victor
 
R

Ron Natalie

Glenn said:
I'm having a problem calling a C function from a publicly available
library file. To get the code to compile, I had to declare the
function as an external C function as follows.

extern "C" lib_function(....);
What is the declaration of the fuction in C?
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,744
Messages
2,569,484
Members
44,903
Latest member
orderPeak8CBDGummies

Latest Threads

Top