class blah {
public:
int method (void);
}
extern blah object;
#include "blah.h"
int blah::method (void) {
;
}
blah object;
extern "C" int wrapper_method ( void ) ;
#include "wrapper.h"
#include "blah.h"
int wrapper_method ( void ) {
return object.method ();
}
Все прекрасно линкуется (gcc-4.6)
iBolit# make
g++ -c -o blah.o blah.cc
g++ -c -o wrap.o wrap.cc
cc -c -o main.o main.c
cc blah.o wrap.o main.o -o blah
iBolit# ./blah
Blah!
iBolit#
Я специально сделал main.c чтобы проверить линковку между C и C++ модулями, все работает. Скорее всего у вас что-то в процессе компиляции/линковки неправильно, например незаслуженно забыт файл blah.o при линковке.