Compilando um projeto DLL escrito em c ++

1

Eu sou novo no Linux, mas eu tentei o Ubuntu para coisas básicas e eu realmente gosto. Eu quero explorar a possibilidade de mudar do Windows. No entanto, no momento estou trabalhando com o Microsoft Visual Studio para desenvolver uma DLL escrita em C ++. A DLL deve ser usada em conjunto com um software no Windows (não há uma contraparte do Linux).

Existe uma maneira fácil de fazer isso do Ubuntu? se sim, como? Algumas pessoas mencionaram o compilador cruzado Mingw, mas eu quero saber se essa é a melhor opção ou se há mais opções por aí.

Obrigado

    
por Juan 01.05.2013 / 09:21

1 resposta

1

Aqui está a solução Mingw: link
Arquivo de origem:

#include <stdio.h>
#include "example_dll.h"

__stdcall void hello(const char *s)
{
        printf("Hello %s\n", s);
}
int Double(int x)
{
        return 2 * x;
}
void CppFunc(void)
{
        puts("CppFunc");
}
void MyClass::func(void)
{
        puts("MyClass.func()");
}

Arquivo de cabeçalho:

#ifndef EXAMPLE_DLL_H
#define EXAMPLE_DLL_H

#ifdef __cplusplus
extern "C" {
#endif

#ifdef BUILDING_EXAMPLE_DLL
#define EXAMPLE_DLL __declspec(dllexport)
#else
#define EXAMPLE_DLL __declspec(dllimport)
#endif

void __stdcall EXAMPLE_DLL hello(const char *s);

int EXAMPLE_DLL Double(int x);

#ifdef __cplusplus
}
#endif

// NOTE: this function is not declared extern "C"
void EXAMPLE_DLL CppFunc(void);

// NOTE: this class must not be declared extern "C"
class EXAMPLE_DLL MyClass
{
public:
        MyClass() {};
        virtual ~MyClass() {};
        void func(void);
};

#endif  // EXAMPLE_DLL_H

Construção:

g++ -c -DBUILDING_EXAMPLE_DLL example_dll.cpp
g++ -shared -o example_dll.dll example_dll.o -Wl,--out-implib,libexample_dll.a
    
por Olcay Ertaş 01.05.2013 / 09:55