Why cannot export symbols when using .a files?

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

Why cannot export symbols when using .a files?

ernesto bascon
Hi, it's me again

I created this very small program:

main.h
------
#ifdef DLL
#define DLLEXPORT __declspec(dllexport)
#else
#define DLLEXPORT __declspec(dllimport)
#endif

class DLLEXPORT A
{
 public:
  A();
  virtual ~A();

  virtual const char* GetMessage();
};

class DLLEXPORT B : public A
{
 public:
  B();
  virtual ~B();

  virtual const char* GetMessage();
};


main.cpp
----------
#include <stdio.h>

#include "main.h"

A::A()
{
 printf("A constructor\n");
}

A::~A()
{
 printf("A destructor\n");
}

const char* A::GetMessage()
{
 return "Hello A world";
}

B::B()
{
 printf("B constructor\n");
}

B::~B()
{
 printf("B destructor\n");
}

const char* B::GetMessage()
{
 return "B sides are better";
}

I compiled it using:

g++ -c main.cpp -DDLL
ar -r main.a main.o
g++ -shared -o main.dll main.a -Wl,-output-def,main.def

and it does not export any symbols, but doing a:

g++ -shared -o main.dll main.o -Wl,-output-def,main.def

publishes everything perfectly.

Any ideas?


ernesto







-------------------------------------------------------
SF.Net email is sponsored by: Discover Easy Linux Migration Strategies
from IBM. Find simple to follow Roadmaps, straightforward articles,
informative Webcasts and more! Get everything you need to get up to
speed, fast. http://ads.osdn.com/?ad_id=7477&alloc_id=16492&op=click
_______________________________________________
MinGW-users mailing list
[hidden email]

You may change your MinGW Account Options or unsubscribe at:
https://lists.sourceforge.net/lists/listinfo/mingw-users