> On Jan 30, 2016, at 6:04 AM, Geert Janssens <geert.gnuc...@kobaltwit.be> > wrote: > > Hi, > > I'm adding c++ code to the csv-importer. Various classes have been defined so > far, > though they aren't really in use yet. They are compiled and linked into the > csv-import > shared lib. > > When running gnucash in this setup, I get this warning: > > WARN <gnc.module> Failed to dlopen() > '/home/janssege/Lokaal/installs/gnucash/master/lib/gnucash/libgncmo > > And the csv import functionality is skipped. > > I understand this has to do with dlopen not understanding c++ name mangling, > but don't > know how to avoid it. > > The classes I have introduced so far don't need to be exposed to the rest of > gnucash. They > are intended for internal use in the csv importer only. > > How can I shield them from dlopen, or otherwise put, mark them as not > exportable ?
I'm a bit puzzled about how exactly the C++ bits are integrated with the rest of the importer, but I think your problem is that you're including C-linkage headers into C++ without declaring them as such. For example in gnc-csv-imp-trans.hpp, you have #include "config.h" #include "Account.h" #include "Transaction.h" #include <vector> #include <memory> it needs to be extern "C" { #include "config.h" #include "Account.h" #include "Transaction.h" } #include <vector> #include <memory> to tell the compiler to use unmangled names for the symbols from those headers. That lack of mangling is called C linkage. You need to do that in both headers and implementations. If a header will be included in a C file, wrap the 'extern "C" {' and closing } with #ifdef __cplusplus … #endif so that the C compiler doesn't see it. Any C++ functions called from C need to also have C linkage, and obviously must be free functions, not class members. Only the declarations need be wrapped in extern "C" {…}. The definitions shouldn't be and can be as C++-y as you want. You can look at qof/gnc-numeric to see an example. Regards, John Ralls _______________________________________________ gnucash-devel mailing list gnucash-devel@gnucash.org https://lists.gnucash.org/mailman/listinfo/gnucash-devel