用MinGW编译DLL并在Uniplot(Eclipse C ++)中调用函数

时间:2018-10-22 12:59:03

标签: c++ eclipse mingw

我正在尝试使用MinGW在Eclipse中编译DLL,并在其他程序(Uniplot)中从该DLL调用函数。

我按照本教程编写了一个测试程序:http://www.mingw.org/wiki/sampledll

example.cpp:

<audio src="https://dl.dropboxusercontent.com/s/1cdwpm3gca9mlo0/kick.mp3" id="aud" controls>

example.h:

var aud = document.getElementById('aud');
fetch(aud.src)
  .then(response => response.blob())
  .then(console.log);

在教程之后,我在项目的构建命令中添加了以下几行:

GCC C ++编译器

<audio src="https://dl.dropboxusercontent.com/s/1cdwpm3gca9mlo0/kick.mp3" id="aud" controls>

MinGW C ++链接器

#include "stdio.h"
#include "example.h"
#include <iostream>
#include <algorithm>

using namespace std;

void sortfunct(int in1, int in2,int in3,int in4,int in5)
{

    int temp1;
    int arr[] = {in1,in2,in3,in4,in5};

    std::sort(arr, arr + 5);

    cout << "Elements sorted successfully \n";
    cout << "Sorted list in ascending order \n";

    for (temp1=0; temp1 < 5; temp1++) {

        std::cout << arr[temp1] << "\n";

        }
}

(文件名已更改)

尽管debug和release文件夹为空,但Eclipse将编译此文件而没有任何错误。没有.dll输出。

我注意到是否将GCC编译器的build命令更改为:

#ifndef EXAMPLE_H
#define EXAMPLE_H

#ifdef __cplusplus
extern "C" {
#endif

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

void EXAMPLE_DLL sortfunct(int in1, int in2,int in3,int in4,int in5);

#ifdef __cplusplus
}
#endif

#endif /* EXAMPLE_DLL_H_ */

Eclipse会在example.cpp中给我错误:

g++ -O3 -Wall -c -DBUILDING_EXAMPLE example.cpp

Eclipse输出以下文件:example.o。

我对链接和进出口申报的整个过程不知所措。我希望这是本教程中的完成方式。 在遵循本教程之前,我编译的所有DLL都不起作用。 Uniplot无法在DLL中找到函数,我认为这是本教程应解决的问题。

如果有人知道我在做什么错,请告诉我。任何形式的帮助都将受到赞赏。

0 个答案:

没有答案