1

I am new to Linux, but I have tried Ubuntu for basic stuff and I really like it. I want to explore the possibility to switch from Windows. However, at the moment I am working with Microsoft Visual Studio to develop a DLL written in C++. The DLL is to be used together with a software in Windows (there is no Linux counterpart).

Is there an easy way to do this from Ubuntu? if so, how? Some people have mentioned Mingw cross-compiler, but I want to know if this is the best option or if there are more options out there.

Thanks

1 Answer 1

1

Here is the Mingw solution:
http://www.mingw.org/wiki/sampleDLL
Source file:

#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()");
}

Header file:

#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

Building:

g++ -c -DBUILDING_EXAMPLE_DLL example_dll.cpp
g++ -shared -o example_dll.dll example_dll.o -Wl,--out-implib,libexample_dll.a

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .