我正在尝试使用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中找到函数,我认为这是本教程应解决的问题。
如果有人知道我在做什么错,请告诉我。任何形式的帮助都将受到赞赏。