在Windows中创建共享库(使用MSVC编译器)

Creating shared library in Windows (using MSVC compiler)

本文关键字:使用 MSVC 编译器 Windows 创建 共享      更新时间:2023-10-16

我有几个查询,如下所述,关于命令行选项及其在msvc中的行为:

1)如何构建/创建动态库?

假设我有两个文件mul.cppsum.cpp:

mul.cpp

#include "mul.h"
int mul(int a, int b)
{
    return (a*b);
}

sum.cpp

#include "sum.h"
int sum(int a, int b)
{
    return (a+b);
}

这是非常通用的与平台无关的实现。

main.cpp

#include <iostream>
#include "mul.h"
#include "sum.h"
int main(int argc, char **argv)
{
    std::cout << "mul(2,5) = " << mul(2,5) << std::endl;
    std::cout << "sum(2,5) = " << sum(2,5) << std::endl;
    return 0;
}

我想创建共享库sum.dllmul.dll,最后将它们与main.o链接以使用命令提示符生成可执行文件?

我看到一个描述解决方案的链接

但是它没有解释如何在命令行中使用它。那么我如何创建一个dll而不用担心手动创建.def文件或使用__declspec(dllexport)函数?

在链接中提到/DEF/DUMBIN可以用于相同的目的,但是如何在这个例子中使用它呢?

2)我如何实现调试构建相同的例子?

执行以下步骤:

  1. 在MSVC中创建一个示例DLL和可执行文件一起工作,项目向导将帮助您完成。
  2. 在__dlexport需要去的地方,你已经有了一个宏。#define为任何不是MS Windows的东西清空。不过,你可能想使用GCC可见性注释。
  3. 在项目设置中找到你可以告诉它给你整个编译器和链接器命令行的地方。然后在构建期间将它们写入输出窗口。
  4. 研究MSVC的IDE使用的设置。您可以在命令行上执行相同的步骤。

另外,可以查看跨平台库,如Boost, libsigc++, wxWidgets, STLport等,以获取可以在多个平台上编译的代码示例。