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

标签 c windows visual-c++ dll build

我已经做了大约 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

关于c - 如何在 Windows 中使用 MSVC 从命令行构建 DLL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1130479/

相关文章:

c - .c 中的变量更改值不正确

c - 在 C 中包含一个外部库

windows - 如何在 Windows 的 linux 子系统上安装 numpy?

c++ - 有没有办法在 Visual Studio 2012 中使用委托(delegate)构造函数?

带计时器的 C++ 对话框

libcurl 未处理分块响应

c - 为什么 mmap() 在 1TB 稀疏文件上因 ENOMEM 而失败?

windows - 将 Eclipse 配置为 Go IDE

c - 键盘 Hook

无法解决使用 C 中函数的指针返回数组的错误?