help-gplusplus
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Linker won't find dll


From: jjones7947
Subject: Re: Linker won't find dll
Date: Mon, 25 Aug 2008 12:16:25 -0700 (PDT)
User-agent: G2/1.0

On Aug 25, 10:28 am, Paul Pluzhnikov <ppluzhnikov-...@gmail.com>
wrote:
> jjones7...@comcast.net writes:
> > It appears to work the same as the java System.loadLibrary(<libname>)
> > in that it is OS agnostic and finds an OS specific library. So I went
> > to using "summarizer37". It now does not complain about not being able
> > to find it. However, the reason that the library was included was to
> > provide reference to a number of symbols (functions) I am using in
> > jsummarizer.cc. Other functions (e.g. destructors) are still showing
> > up as unresolved and therefore no dll is being produced.
>
> Please read this:
>  http://catb.org/esr/faqs/smart-questions.html
>
> I am guessing that you get some link error, but it is difficult to
> help you when you don't tell *exactly* what the error is.
>
> > Using a dll
> > tool, I can see that at least some of them are in the export table of
> > summarizer37.dll or any of the other 4 dlls it depends on.
>
> I've never used 'dlltool'; reading its man page, I do not immediately
> see how you can tell from its output what is and what isn't in the
> export table of summarizer37.dll.
>
> Also, you mention destructors. If summarizer37.dll was not produced
> by the same version of g++ you are using, you can't expect to be
> able to link to destructors defined in it, because C++ code compiled
> with different compilers is not link-compatible.
>
> > Tried
> > linking to all 5, no joy. Is there an option I need to be using the
> > signals that I am not interessted in using those?
>
> But you *are* interested in those symbols: your jsummarizer.obj
> references them (or else your link would not have failed).
>
> Cheers,
> --
> In order to understand recursion you must first understand recursion.
> Remove /-nsp/ for email.
The link errors I get are the following:
build/jsummarizer.o:jsummarizer.cc:(.text
$_ZN7inxight10summarizerD1Ev[inxight::summarizer::~summarizer()]
+0x4f): undefined reference to
`inxight::delete_summarizer(inxight::summarizer_interface*)'

build/jsummarizer.o:jsummarizer.cc:(.text
$_ZN7inxight10summarizerC1EPKcS2_S2_[inxight::summarizer::summarizer(char
const*, char const*, char const*)]+0x6b): undefined reference to
`inxight::make_summarizer(char const*, char const*, char const*)'

build/jsummarizer.o:jsummarizer.cc:(.text
$_ZN7inxight13summarizationD1Ev[inxight::summarization::~summarization()]
+0x5b): undefined reference to
`inxight::delete_summarization(inxight::summarization_interface*)'

build/jsummarizer.o:jsummarizer.cc:(.text
$_ZN7inxight13summarizationC1ERNS_20summarizer_interfaceERNS_21byte_stream_interfaceERKNS_27summarization_input_optionsERKNS_29summarization_sentence_outputERKNS_27summarization_phrase_outputEPKcjSF_[inxight::summarization::summarization(inxight::summarizer_interface&,
inxight::byte_stream_interface&, inxight::summarization_input_options
const&, inxight::summarization_sentence_output const&,
inxight::summarization_phrase_output const&, char const*, unsigned
int, char const*)]+0x9a): undefined reference to
`inxight::make_summarization(inxight::summarizer_interface&,
inxight::byte_stream_interface&, inxight::summarization_input_options
const&, inxight::summarization_sentence_output const&,
inxight::summarization_phrase_output const&, char const*, unsigned
int, char const*)'

 build/jsummarizer.o:jsummarizer.cc:(.text
$_ZN7inxight16file_byte_stream4openEPKc[inxight::file_byte_stream::open(char
const*)]+0x11a): undefined reference to
`inxight::file_not_found::file_not_found(char const*, char const*)'

build/jsummarizer.o:jsummarizer.cc:(.text
$_ZN7inxight16file_byte_stream4openEPKc[inxight::file_byte_stream::open(char
const*)]+0x18e): undefined reference to
`inxight::file_not_found::~file_not_found()'

build/jsummarizer.o:jsummarizer.cc:(.text
$_ZN7inxight10summarizerD0Ev[inxight::summarizer::~summarizer()]
+0x4f): undefined reference to
`inxight::delete_summarizer(inxight::summarizer_interface*)'

build/jsummarizer.o:jsummarizer.cc:(.text
$_ZN7inxight13summarizationD0Ev[inxight::summarization::~summarization()]
+0x5b): undefined reference to
`inxight::delete_summarization(inxight::summarization_interface*)'
collect2: ld returned 1 exit status

Now in continuing to look for answers I found a post about virtual
functions being a problem, I looked the methods up in the header
files. They are all virtual. Apparently, I have to implement them?
FYI the "dlltool" I used was Anywhere PE, sorry, was using it in a
generic sense.
As you may have understood, this is a JNI project. I have done these
before against dlls of unknown compilation. I am not trying make
summarizer37.dll a part of the one I'm building, merely load it at run-
time. The other link command-line I included in my original post
worked. I may be confused about this, but thought that linking
involved putting the code together in some way as a single exe or dll.
Thought this is different from writing code which calls functions in a
dll/lib/so, even though the calling code and the dll are compiled by
different compilers.  Am I completely off base on that?
Jim


reply via email to

[Prev in Thread] Current Thread [Next in Thread]