delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2005/01/17/17:47:53

Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm
List-Subscribe: <mailto:cygwin-subscribe AT cygwin DOT com>
List-Archive: <http://sourceware.org/ml/cygwin/>
List-Post: <mailto:cygwin AT cygwin DOT com>
List-Help: <mailto:cygwin-help AT cygwin DOT com>, <http://sourceware.org/ml/#faqs>
Sender: cygwin-owner AT cygwin DOT com
Mail-Followup-To: cygwin AT cygwin DOT com
Delivered-To: mailing list cygwin AT cygwin DOT com
From: svoboda AT cs DOT cmu DOT edu
Reply-To: svoboda AT cs DOT cmu DOT edu
To: cygwin AT sourceware DOT org
Subject: Building DLL's using g++, not gcc
Date: Mon, 17 Jan 2005 17:46:25 -0500
User-Agent: KMail/1.7.2
Cc: David Svoboda <svoboda AT cs DOT cmu DOT edu>
MIME-Version: 1.0
Message-Id: <200501171746.26708.svoboda@cs.cmu.edu>
Source-Info: Sender is really svoboda+@mandal.lti.cs.cmu.edu

I've been trying to build a DLL using g++, and given the problems I was 
having, I decided to try a 'toy' example, which is available at:
	http://cygwin.com/cygwin-ug-net/dll.html
I tweaked the two files around thusly:


hello.C:
-----
#include <stdio.h>
int hello() { printf("Hello World\n");}
-----

main.C:
-----
#include <stdio.h>
typedef void (*fn_type)();

extern "C" {
  int dlopen(char*);
  int dlsym( int, char*);
}

int main() {
  int handle = 0;
  fn_type fn = 0;
  if ((handle = dlopen( "hello.dll")) == 0) {
    printf( "Cannot open hello.dll\n");
  }
  if ((fn = (fn_type) dlsym( handle, "hello")) == 0) {
    printf( "Cannot open hello()\n");
  }
  fn();
}
-----

This way, hello.C is a valid C or C++ application, and main.C is a
valid C++ application. I build main.exe by:

	g++ -o main main.C

If I build hello.dll this way, it works:

	gcc -shared -o hello.dll hello.C
	./main
	Hello world!

But if I build hello.dll this way, it doesn't work:

	g++ -shared -o hello.dll hello.C
	./main
	bash: [2084: 2] testaddr: Inappropriate ioctl for device

Why? What am I doing wrong?

~David Svoboda


--
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 -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019