This is the mail archive of the cygwin mailing list for the Cygwin project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Creating dll in cygwin gives "Undefined reference" errors

On 7/28/07, Brian Dessent <> 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:
> Brian
> --
> Unsubscribe info:
> Problem reports:
> Documentation:
> 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.

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

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.

Pradip K. Jadav

Unsubscribe info:
Problem reports:

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]