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