RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 1426781
Accepted
Y0MMY
Y0MMY
Asked:2022-09-05 18:19:52 +0000 UTC2022-09-05 18:19:52 +0000 UTC 2022-09-05 18:19:52 +0000 UTC

用 gcc 编译

  • 772

在输出文件中通过 gcc 编译 .dll 时如何编译 .lib 文件?如果我通过 clang 编译,那么它会给我 .dll 和 .lib

构建.bat:

REM Build script for engine
@ECHO OFF
SetLocal EnableDelayedExpansion

REM Get a list of all the .c files.
SET cFilenames=
FOR /R %%f in (*.cpp) do (
    SET cFilenames=!cFilenames! %%f
)

REM echo "Files:" %cFilenames%

SET assembly=engine
SET compilerFlags=-g -Wvarargs -Wall -Werror
REM -Wall -Werror
SET includeFlags=-Isrc 
SET linkerFlags=-luser32 
SET defines=-D_DEBUG  -D_CRT_SECURE_NO_WARNINGS

ECHO "Building %assembly%%..."
g++ %cFilenames% %compilerFlags% -o ../bin/%assembly%.dll %defines% %includeFlags% %linkerFlags%
c++ bat
  • 1 1 个回答
  • 62 Views

1 个回答

  • Voted
  1. Best Answer
    HolyBlackCat
    2022-09-06T00:26:32Z2022-09-06T00:26:32Z

    GCC 使用静态库的扩展.a,而不是.lib.

    Clang 给你的东西根本不重要。它可以在 GCC 或 MSVC 兼容模式下运行,具体取决于您的设置方式。

    要构建静态库,请执行以下操作:

    • g++ 1.cpp -c- 得到1.o

    • ar -rcs lib1.a 1.o- 获取lib1.a- 图书馆本身。

      在此之前,可能值得删除旧文件,否则它ar会将目标文件添加到现有文件中。(添加新的并覆盖旧的,但不会删除任何东西 - 有点。)

      强烈建议在文件名中添加前缀lib...,因为稍后,当您包含带有标志的库时-l??,此前缀将自动添加到名称中...

    要构建动态库,请执行以下操作:

    • g++ 1.cpp -c- 得到1.o

    • g++ 1.o -shared -o lib1.dll- 得到lib1.dll。

      现代 MinGW 可以直接与.dll. 如果您有一些旧版本,那么您需要添加到最后一个命令-Wl,--out-implib=lib1.dll.a,以便以后在与库链接时,指定这个新创建lib1.dll.a的,而不是.dll(也带有标志-l1,lib??.dll.a自动附加)。

    尽管如此,紧身衬衫仍然是一个值得怀疑的选择。最好花时间学习 Make 或 CMake,然后它会(相对)跨平台。

    它在垃圾桶里:-D_DEBUG -D_CRT_SECURE_NO_WARNINGS. 这仅对 MSVC 标准库有意义,GCC 有自己的。

    • 4

相关问题

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5