From: ert AT cit DOT org DOT by (Andrew Lipnitsky) Subject: Re: Usage of dll created in cygwin in VC++ 22 Jan 1999 18:36:28 -0800 Message-ID: <36A8A8DA.F56928A5.cygnus.gnu-win32@cit.org.by> References: <000f01bc05f0$2fee7d60$11247aa3 AT sdf5_l1117 DOT tatainfotech DOT co DOT in> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------2D9B1EB428533349D97B8589" To: "S. Krishnaprasad" , gnu-win32 AT cygnus DOT com This is a multi-part message in MIME format. --------------2D9B1EB428533349D97B8589 Content-Type: multipart/alternative; boundary="------------5F9685F673F044173EEED2FC" --------------5F9685F673F044173EEED2FC Content-Type: text/plain; charset=koi8-r Content-Transfer-Encoding: 7bit "S. Krishnaprasad" wrote: > I have useddllwrap --export-all mdll.dll mylib.a -L. -lgmp I get the > DLL file.But when I try to use it in a Visual C++ application it gives > me a undefined reference to the functionnames defined in this DLL.I > created a export .DEF file which is as follows LIBRARY > EXPORTS function1 function2 etc..Then I created a > import file .lib using dllwrap --dllname --output-lib > This created a .lib file > > This when linked into a Visual C++ application it compiles and links > properly but whenI try to run this application it just terminates at > the function call. Can anybody help me. Yes. In order to link dll you have to get library file. But you have to use LIB.exe program from VisualStudio like that d:\DevStudio\VC\bin\LIB.EXE /DEF:foo.def After that you will get foo.lib file. >This when linked into a Visual C++ application it compiles and links properly but when >I try to run this application it just terminates at the function call. Due to program (as well dll) compiled with cygwin using cygwin1.dll you can not link it with Visual C++ . In order to get rid cygwin1.dll you must compile your files with -mno-cygwin option, for example: gcc -mno-cygwin -c foo.c -o foo.o gcc -mno-cygwin -c dllinit.c -o dllinit.o And you must create dll with --target option, for example dllwrap --target i386-mingw32 -mno-cygwin --dllname foo.dll foo.o dllinit.o After that you will get foo.dll file and so you can going to VC. Note: At first, you must have something like dllinit.c file (see attachment). At second, the algorithm described above is suitable only for C, not for C++ language. --------------5F9685F673F044173EEED2FC Content-Type: text/html; charset=koi8-r Content-Transfer-Encoding: 7bit  

"S. Krishnaprasad" wrote:

 I have useddllwrap --export-all mdll.dll mylib.a -L. -lgmp I get the DLL file.But when I try to use it in a Visual C++ application it gives me a undefined reference to the functionnames defined in this DLL.I created a export .DEF file which is as follows LIBRARY <dllname>EXPORTS     function1    function2 etc..Then I created a import file  .lib using dllwrap --dllname <name.dll> --output-lib <libname.lib> This created a .lib file

 This when linked into a Visual C++ application it compiles and links properly but whenI try to run this application it just terminates at the function call. Can anybody help me.

Yes. In order to link dll you have to get library file. But you have to use
LIB.exe program from VisualStudio like that
d:\DevStudio\VC\bin\LIB.EXE /DEF:foo.def
After that you will get foo.lib file.

>This when linked into a Visual C++ application it compiles and links properly but when
>I try to run this application it just terminates at the function call.

Due to program (as well dll) compiled with cygwin using cygwin1.dll
you can not link it with Visual C++ . In order to get rid  cygwin1.dll
you must compile your files with -mno-cygwin option, for example:
gcc -mno-cygwin -c foo.c -o foo.o
gcc -mno-cygwin -c dllinit.c -o dllinit.o
And you must create dll with --target option, for example
dllwrap --target i386-mingw32 -mno-cygwin --dllname foo.dll foo.o dllinit.o
After that you will get foo.dll file and so you can going to VC.
Note:
At first, you  must have something like dllinit.c file (see attachment).
At second, the algorithm described above is suitable only for C, not for C++
language. --------------5F9685F673F044173EEED2FC-- --------------2D9B1EB428533349D97B8589 Content-Type: application/x-unknown-content-type-cfile; name="dllinit.c" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="dllinit.c" LyogZGxsaW5pdC5jIC0tIFBvcnRhYmxlIERMTCBpbml0aWFsaXphdGlvbi4gCiAgIENvcHly aWdodCAoQykgMTk5OCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgQ29udHJp YnV0ZWQgYnkgTXVtaXQgS2hhbiAoa2hhbkB4cmF5bGl0aC53aXNjLmVkdSkuCgogICBJJ3Zl IHVzZWQgRGxsTWFpbiBhcyB0aGUgRExMICJtYWluIiBzaW5jZSB0aGF0J3MgdGhlIG1vc3Qg Y29tbW9uIAogICB1c2FnZS4gTVNWQyBhbmQgTWluZ3czMiBib3RoIGRlZmF1bHQgdG8gRGxs TWFpbiBhcyB0aGUgc3RhbmRhcmQKICAgY2FsbGJhY2sgZnJvbSB0aGUgbGlua2VyIGVudHJ5 IHBvaW50LiBDeWd3aW4zMiBiMTkrIHVzZXMgZXNzZW50aWFsbHkgCiAgIHRoZSBzYW1lLCBh bGJlaXQgc2xpZ2h0bHkgZGlmZmVyZW50bHkgaW1wbGVtZW50ZWQsIHNjaGVtZS4gUGxlYXNl CiAgIHNlZSBERUNMQVJFX0NZR1dJTl9ETEwgbWFjcm8gaW4gPGN5Z3dpbjMyL2N5Z3dpbl9k bGwuaD4gZm9yIG1vcmUgCiAgIGluZm8gb24gaG93IEN5Z3dpbjMyIHVzZXMgdGhlIGNhbGxi YWNrIGZ1bmN0aW9uLgoKICAgVGhlIHJlYWwgZW50cnkgcG9pbnQgaXMgdHlwaWNhbGx5IGFs d2F5cyBkZWZpbmVkIGJ5IHRoZSBydW50aW1lIAogICBsaWJyYXJ5LCBhbmQgdXN1YWxseSBu ZXZlciBvdmVycmlkZGVuIGJ5IChjYXN1YWwpIHVzZXIuIFdoYXQgeW91IGNhbiAKICAgb3Zl cnJpZGUgaG93ZXZlciBpcyB0aGUgY2FsbGJhY2sgcm91dGluZSB0aGF0IHRoZSBlbnRyeSBw b2ludCBjYWxscywgCiAgIGFuZCB0aGlzIGZpbGUgcHJvdmlkZXMgc3VjaCBhIGNhbGxiYWNr IGZ1bmN0aW9uLCBEbGxNYWluLgoKICAgTWluZ3czMjogVGhlIGRlZmF1bHQgZW50cnkgcG9p bnQgZm9yIG1pbmd3MzIgaXMgRGxsTWFpbkNSVFN0YXJ0dXAKICAgd2hpY2ggaXMgZGVmaW5l ZCBpbiBsaWJtaW5ndzMyLmEgVGhpcyBpbiB0dXJuIGNhbGxzIERsbE1haW4gd2hpY2ggaXMK ICAgZGVmaW5lZCBoZXJlLiBJZiBub3QgZGVmaW5lZCwgdGhlcmUgaXMgYSBzdHViIGluIGxp Ym1pbmd3MzIuYSB3aGljaAogICBkb2VzIG5vdGhpbmcuCgogICBDeWd3aW4zMjogVGhlIGRl ZmF1bHQgZW50cnkgcG9pbnQgZm9yIGN5Z3dpbjMyIGIxOSBvciBuZXdlciBpcwogICBfX2N5 Z3dpbjMyX2RsbF9lbnRyeSB3aGljaCBpcyBkZWZpbmVkIGluIGxpYmN5Z3dpbi5hLiBUaGlz IGluIHR1cm4KICAgY2FsbHMgdGhlIHJvdXRpbmUgeW91IHN1cHBseSB0byB0aGUgREVDTEFS RV9DWUdXSU5fRExMIChzZWUgYmVsb3cpCiAgIGFuZCwgZm9yIHRoaXMgZXhhbXBsZSwgSSd2 ZSBjaG9zZSBEbGxNYWluIHRvIGJlIGNvbnNpc3RlbnQgd2l0aCBhbGwKICAgdGhlIG90aGVy IHBsYXRmb3Jtcy4KCiAgIE1TVkM6IE1TVkMgcnVudGltZSBjYWxscyBEbGxNYWluLCBqdXN0 IGxpa2UgTWluZ3czMi4KCiAgIFN1bW1hcnk6IElmIHlvdSBuZWVkIHRvIGRvIGFueXRoaW5n IHNwZWNpYWwgaW4gRGxsTWFpbiwganVzdCBhZGQgaXQKICAgaGVyZS4gT3RoZXJ3aXNlLCB0 aGUgZGVmYXVsdCBzZXR1cCBzaG91bGQgYmUganVzdCBmaW5lIGZvciA5OSUrIG9mCiAgIHRo ZSB0aW1lLiBJIHN0cm9uZ2x5IHN1Z2dlc3QgdGhhdCB5b3UgKm5vdCogY2hhbmdlIHRoZSBl bnRyeSBwb2ludCwKICAgYnV0IHJhdGhlciBjaGFuZ2UgRGxsTWFpbiBhcyBhcHByb3ByaWF0 ZS4KCiAqLwoKCiNkZWZpbmUgV0lOMzJfTEVBTl9BTkRfTUVBTgojaW5jbHVkZSA8d2luZG93 cy5oPgojdW5kZWYgV0lOMzJfTEVBTl9BTkRfTUVBTgojaW5jbHVkZSA8c3RkaW8uaD4KCkJP T0wgQVBJRU5UUlkgRGxsTWFpbiAoSElOU1RBTkNFIGhJbnN0LCBEV09SRCByZWFzb24sIAog ICAgICAgICAgICAgICAgICAgICAgIExQVk9JRCByZXNlcnZlZCAvKiBOb3QgdXNlZC4gKi8g KTsKCiNpZmRlZiBfX0NZR1dJTjMyX18KCiNpbmNsdWRlIDxjeWd3aW4zMi9jeWd3aW5fZGxs Lmg+CkRFQ0xBUkVfQ1lHV0lOX0RMTCggRGxsTWFpbiApOwovKiBzYXZlIGhJbnN0YW5jZSBm cm9tIERsbE1haW4gKi8KSElOU1RBTkNFIF9faERsbEluc3RhbmNlX2Jhc2U7CgojZW5kaWYg LyogX19DWUdXSU4zMl9fICovCgovKgogKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICoKICogRGxsTWFp biAtLQogKgogKglUaGlzIHJvdXRpbmUgaXMgY2FsbGVkIGJ5IHRoZSBNaW5ndzMyLCBDeWd3 aW4zMiBvciBWQysrIEMgcnVuIAogKgl0aW1lIGxpYnJhcnkgaW5pdCBjb2RlLCBvciB0aGUg Qm9ybGFuZCBEbGxFbnRyeVBvaW50IHJvdXRpbmUuIEl0IAogKglpcyByZXNwb25zaWJsZSBm b3IgaW5pdGlhbGl6aW5nIHZhcmlvdXMgZHluYW1pY2FsbHkgbG9hZGVkIAogKglsaWJyYXJp ZXMuCiAqCiAqIFJlc3VsdHM6CiAqICAgICAgVFJVRSBvbiBzdWNlc3MsIEZBTFNFIG9uIGZh aWx1cmUuCiAqCiAqIFNpZGUgZWZmZWN0czoKICoKICotLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAqLwpC T09MIEFQSUVOVFJZCkRsbE1haW4gKAoJIEhJTlNUQU5DRSBoSW5zdCAvKiBMaWJyYXJ5IGlu c3RhbmNlIGhhbmRsZS4gKi8gLAoJIERXT1JEIHJlYXNvbiAvKiBSZWFzb24gdGhpcyBmdW5j dGlvbiBpcyBiZWluZyBjYWxsZWQuICovICwKCSBMUFZPSUQgcmVzZXJ2ZWQgLyogTm90IHVz ZWQuICovICkKewoKI2lmZGVmIF9fQ1lHV0lOMzJfXwogIF9faERsbEluc3RhbmNlX2Jhc2Ug PSBoSW5zdDsKI2VuZGlmIC8qIF9fQ1lHV0lOMzJfXyAqLwoKICBzd2l0Y2ggKHJlYXNvbikK ICAgIHsKICAgIGNhc2UgRExMX1BST0NFU1NfQVRUQUNIOgogICAgICBicmVhazsKCiAgICBj YXNlIERMTF9QUk9DRVNTX0RFVEFDSDoKICAgICAgYnJlYWs7CgogICAgY2FzZSBETExfVEhS RUFEX0FUVEFDSDoKICAgICAgYnJlYWs7CgogICAgY2FzZSBETExfVEhSRUFEX0RFVEFDSDoK ICAgICAgYnJlYWs7CiAgICB9CiAgcmV0dXJuIFRSVUU7Cn0KCg== --------------2D9B1EB428533349D97B8589-- - For help on using this list (especially unsubscribing), send a message to "gnu-win32-request AT cygnus DOT com" with one line of text: "help".