This is the mail archive of the
cygwin
mailing list for the Cygwin project.
Re: Urgent !!! Reg Linking sybase DLL in cygwin..
2008/5/27 Mani kandan <kvmani76@gmail.com>:
> I keep forgetting it can do that these days :(
>
>> The only real reason you need an import library is if
>> you're doing things like adding aliases for symbol names, or you need to
>> remove stdcall name decorations. (Or if you need the name indirection
>> that an import library provides, e.g. being able to have -lfoo refer to
>> libfoo.dll.a which refers to cygfoo-12.dll.) But if you simply want to
>> link against a DLL you can do so directly without any of the mess of
>> pexports or def files or import libs or whatnot.
>
> Perhaps it's time that OP explain exactly /what/ the problem is; I did
> assume that a straightforward "-lfoo" must already have not worked in some
> way. Mani?
>
> =================================================
>
> Hi,
>
> Yes, I am not able to link directly sybase .dll in g++ compiler in cygwin.
> I have created .def file with help of dumpbin command. I have
> modified the .def file.
> My .def file will be
> EXPORTS
>
> JagCppProcess_main
> delete_JagCppProcess
> new_JagCppProcess
> new_JagSIOPStream
>
> With help of dlltool command i have created .a file also. Now i can
> able to link and
> i got the EXE also. But while running the exe, i got the error message
> _cygtls::handle_exceptions: Exception: STATUS_ACCESS_VIOLATION
> I want to clarify the following things
> (i) Can i use dumpbin to get the .def file?
> (ii) Why the exception thrown ?
>
> But when i run the same sample code arith.cpp in windows
> environment, i am getting the result.
You are meaning with MSVC?
Or with mingw32 g++?
You cannot link a c++ dll with a different compiler / linker at all in general.
If this sybase.dll was not generated with the cygwin g++, you will not be able
to link to it with the cygwin g++.
There is the simple name mangling issue which you circumvented with
the explicit .def file,
and there is the conflict of underlying exceptions and memory models.
A new/free in the sybase dll will not cooperate with a cygwin
new/free. A sybase.dll exception will not be caught
by your cygwin app.
If it was generated with MSVC you have to use MSVC.
Ask your vendor for a cygwin dll or sourcecode.
--
Reini Urban
http://phpwiki.org/ http://murbreak.at/
--
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/