imacake
imacake

Reputation: 1713

Two dynamic libraries, one in C other in C++, using eachother

Hoi,

I have a dynamic library loader, which is written in C++ but provides a C-compatible API.

That loader can load modules, which are written in any programming language. They're arranged in a named list and can request function pointers of other modules. Now, a module written in C and compiled with a C compiler gets the functions pointers of any other module, which is written and compiled in C++.

So my question: Are function-pointers cross-compiler valid? I think I heard of something like __cdecl once, long time ago. I use Linux 64bit.

T.I.A.

Upvotes: 1

Views: 114

Answers (2)

mirk
mirk

Reputation: 5530

Function pointers are compatible between C and C++.

The only limitation, is that you have to declare your C-functions with extern "C" linkage when used within C++:

extern "C"
{
     int foo();
}

Upvotes: 0

Useless
Useless

Reputation: 67822

// my C++ code ...
extern "C" {
  void thisFunctionWillBeCallableFromC();
}

void butThisOneMayNot();

struct S
{
    void thisDefinitelyWontBeCallableFromC(std::map<int, S>);
};

C++ code should declare interfaces with extern "C" linkage to be callable from C.

Or do you mean C++ code generated by different compilers?

Upvotes: 1

Related Questions