我在eclipse中创建了一个DLL,如下所示: 创建了一个C-Project - >共享库(MinGW) - >名称:testdll 使用简单的TestFunction创建了一个头文件和一个源文件 源文件类似于:
#include <stdio.h>
#include "test.h"
void write(){
printf("hallo von der dll\n");
}
然后我构建它并在Debug下创建了一个libtestdll.dll。 到目前为止,这对我来说很好。
现在我创建了一个名为usedll的C-Hello World-Project。 该文件如下所示:
#include <stdio.h>
#include <stdlib.h>
#include "test.h"
int main(void) {
puts("!!!Hello World!!!"); /* prints !!!Hello World!!! */
write();
printf("done\n");
return EXIT_SUCCESS;
}
我在项目usedll下创建了一个lib-Folder。我将libtestdll.dll和test.h复制到此文件夹中。
右键单击项目usedll - &gt;属性 - &gt; C ++ Build - &gt;设置 - &gt; GCC C编译器 - &gt;包括 - &gt;添加(从同一个项目中添加了lib-Folder)
然后在MinGW C Linker下 - &gt;图书馆 - &gt;库 - 我添加了字符串libdll
在图书馆搜索路径下,我从usedll-Project添加了lib文件夹。
现在构建的项目没有错误,但是当我执行它时,write-function不会产生任何输出。
有人看到我做错了吗?
答案 0 :(得分:1)
请阅读此内容......
http://www.mingw.org/wiki/sampledll
我将在下方添加一个片段,但我觉得您可能没有导出您的功能,阅读上述内容将解释如何执行此操作(使用MinGW)。
(此代码段直接来自上述网页)
#ifdef BUILDING_EXAMPLE_DLL
#define EXAMPLE_DLL __declspec(dllexport)
#else
#define EXAMPLE_DLL __declspec(dllimport)
#endif
void __stdcall EXAMPLE_DLL hello(const char *s);
请注意使用 __ declspec(dllexport)和 __ declspec(dllimport)