c - 如何在 Windows 中使用 MSVC 从命令行构建 DLL

我已经做了大约 20 年的 C 语言,但我从未构建过 DLL;我一直更喜欢静态链接。

我使用命令行 - cl.exe 等 - 和 gnumake makefile 来构建我的 Windows 应用程序。

我现在想构建一个 DLL,但我很困惑。

最终,我将同时得到一个 .lib 和一个 .dll。 .lib 包含在运行时加载 DLL 并使用其中的代码的 stub 代码。

我一直在查看 lib 和 link 的命令行,但对我来说并不清楚究竟应该做什么来产生这个输出。

所以我有一些问题;

cl 是否需要任何额外的参数来表明它正在为 DLL 编译? (我知道 DLL 导出的原型(prototype)需要 __declspec(dllexport))。

我知道链接需要/dll 作为参数。

我会运行 lib 链接,分别生成 .lib 和 .dll,还是链接同时生成?

我还需要知道什么?

最佳答案

在命令行使用:

cl.exe /LD <files-to-compile>

或者,如果您更喜欢更详细和明确的版本:

cl.exe /D_USRDLL /D_WINDLL <files-to-compile> <files-to-link> /link /DLL /OUT:<desired-dll-name>.dll

https://stackoverflow.com/questions/1130479/

相关文章:

deployment - 构建和部署的区别?

java - 将复杂的项目从Ant迁移到Maven-如何处理异常的文件夹结构?

java - 使Maven构建更快的方法?

gcc - 如何在编译期间强制 cmake 包含 "-pthread"选项?

build-process - 在 hudson 的工作之间共享构建工件

build - WiX x64 平台目标

ant - 如何在使用 ANT 删除目录之前检查目录是否存在?

build - 编程定义 : What exactly is 'Building' .

maven - Java 构建工具 : Ant vs. Maven

c++ - 如何在 Mac OS X (C++) 中使用 dylib