E
ernesto
Hi, everybody:
I created this very small class on Windos32, mingw:
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
exports all classes and methods perfectly.
Any ideas?
ernesto
I created this very small class on Windos32, mingw:
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
exports all classes and methods perfectly.
Any ideas?
ernesto