c++ - 使用创建的 DLL 文件(从应用程序调用函数)

标签 c++ c dll

我有一个虚拟问题。我有三个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 我打开了这个文件: enter image description here

如何在我的应用程序中使用此文件(跨平台)?我如何调用函数 f1, f2, f3 ?

抱歉我的英语不好

最佳答案

假设您有 header ,那么您唯一缺少的是 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-implib,libtest1.a

然后,要链接共享库,请将 -ltest1 传递给 gcc

您仍然需要为每个平台和架构(x86、AMD64、IA64 等)重新编译库。例如,Windows 使用 DLL,而 Linux 使用共享对象。

参见http://www.mingw.org/wiki/sampleDLL了解更多信息。

关于c++ - 使用创建的 DLL 文件(从应用程序调用函数),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7359101/

相关文章:

c - printf 不工作(指针)

c - Arduino 中的代码相同但输出不同

c++ - dll 的环境变量与 exe 不同

c# 使用同一个库的多个版本 (nest)

c++ - 是否可以在不在 C++ 中创建窗口的情况下创建消息循环

c++ - 在 C++ 中使用 RegisterWaitForSingleObject 将参数传递给回调函数

c - 即使下面的代码中有赋值运算符而不是比较运算符,这段代码为什么会打印 "yes"

c++ - ceil 函数在 C++ 中如何工作?

C++ 和 CTime & 系统时钟更改

delphi - 接口(interface) DLL 表单应用程序崩溃