使用创建的 DLL 文件(从应用程序调用函数)
Posted
技术标签:
【中文标题】使用创建的 DLL 文件(从应用程序调用函数)【英文标题】:Using created DLL-file (call function from application) 【发布时间】:2011-09-09 08:38:47 【问题描述】:我有一个假问题。我有三个 C 文件:f1.c f2.c f3.c,其中包含:
// f1.c
int f1()
return 2;
// f2.c
int f2()
return 4;
// f3.c
int f3()
return 10;
我已经有 3 个目标文件,当我运行以下命令时(我在 windows7 下使用 mingc):
gcc -c f1.c f2.c f3.c
我创建 dll 文件:
gcc f1.o f2.o f3.o -o test1.dll -shared
使用 DLL Export Viewer 我打开了这个文件:
如何在我的应用程序(跨平台)中使用此文件?如何调用函数 f1, f2, f3 ?
对不起我的英语不好
【问题讨论】:
跨平台? (你的意思是像windows和linux这样的跨平台吗?) 你必须在不同的平台上重新编译获取该平台的 lib。 【参考方案1】:假设您有标头,您唯一缺少的是 A 存档,链接器需要它来确定 DLL 提供了什么。
改变这个:
gcc f1.o f2.o f3.o -o test1.dll -shared到这里:
gcc f1.o f2.o f3.o -o test1.dll -shared -Wl,--out-imlib,libtest1.a然后,要与共享库链接,请将-ltest1
传递给gcc
。
您仍然需要为每个平台和架构(x86、AMD64、IA64 等)重新编译库。例如,Windows 使用 DLL,但 Linux 使用共享对象。
更多信息请参见http://www.mingw.org/wiki/sampleDLL。
【讨论】:
【参考方案2】:-
在调用程序中包含头文件。
将调用程序链接到与库关联的 .lib 文件。
确保库位于库搜索路径中。
【讨论】:
你能告诉我在哪里可以看到一些例子吗? 该过程将在您的编译器文档中描述。第 2 步始终特定于编译器,第 3 步特定于平台。以上是关于使用创建的 DLL 文件(从应用程序调用函数)的主要内容,如果未能解决你的问题,请参考以下文章