Mail Archives: cygwin/2007/08/11/06:41:46
On 7/28/07, Brian Dessent <brian AT dessent DOT net> wrote:
> Pradip Jadav wrote:
>
> > But when I compiles in cygwin it gives me some "Undefined reference" errors.
> > Take an example,
> >
> > /cygdrive/e/DOCUME~1/LOCALS~1/Temp/ccLMFYUe.o:sample.c:(.text+0x4c):
> > undefined reference to `createlog(int, char*, ...)'
> >
> > Now this "createlog" function is defined in one of .cpp file of my
> > main program.(Just for your information)
> >
> > Can you help me to solve problem of "undefined reference" ??
>
> The undefined reference is because fundamentally ELF (Linux) and PE/COFF
> (Windows) are very different in terms of how linking works under the
> hood. The short explanation is that PE/COFF requires all references to
> be resolved at link-time, thus you have to explicitly tell the linker
> where createlog() is to be found.
>
> But I've typed this explanation so many times, I think I'll just start
> linking to past copies of it:
>
> http://www.cygwin.com/ml/cygwin/2005-07/msg00675.html
> http://www.cygwin.com/ml/cygwin/2006-12/msg00592.html
> http://www.cygwin.com/ml/cygwin/2007-06/msg00450.html
>
> Brian
>
> --
> Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
> Problem reports: http://cygwin.com/problems.html
> Documentation: http://cygwin.com/docs.html
> FAQ: http://cygwin.com/faq/
>
>
Hi Brian,
First of all thanx for your reply.
Secondly, sorry for not going through all previous helps.
BTW, following link helped me a lot.
http://www.cygwin.com/ml/cygwin/2006-12/msg00592.html
YEAH, Now I am able to create .dll file and also succeeded in
attaching it to the main executable.
Steps are ...
###create main.c and do dllexport for a function. For example,
In main.c ==>
__declspec(dllexport) int func1()
###create object file.
g++ -c main.c
###create main.exe file.
g++ -o main.exe main.o -ldl
###create .def file
dlltool.exe --export-all-symbols --output-def main.def main.o
###create main library file.
dlltool.exe --dllname main.exe --def main.def --output-lib libmain.dll.a
###create DLL.
g++ -shared -o theDLL.dll theDLL.c -L. -lmain
Thats it ...!! :)
But scene is not this much only.. This was the scene with a single function.
What if we want to export more than one function from main program?
What if we want to use a class which is declared in main program(Using
this class I Want to create a derived class in dll
code)?
Do I need to specify "__declspec(dllexport)" for all?
Is there any other way? Its because my program is quite big. So
managing code will be very tough na?
Waiting for reply.
--
Regards,
Pradip K. Jadav
(Mob.)+91-9323315353
--
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Problem reports: http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ: http://cygwin.com/faq/
- Raw text -