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

时间:2014-06-30 11:39:22

标签: c++ windows visual-c++ dll makefile

我在下面提到了几个关于命令行选项及其在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链接,以使用命令提示符生成可执行文件?

我遇到了link which describes a solution

但它没有解释使用它的命令行。 那么如何创建dll而不必担心手动创建.def文件或使用__declspec(dllexport)来执行函数?

在链接上提到/DEF/DUMBIN可以用于相同的内容,但如何在此示例中使用它?

2)如何为调试构建实现相同的示例?

1 个答案:

答案 0 :(得分:0)

采取以下步骤:

  1. 在MSVC中创建一个协同工作的示例DLL和可执行文件,项目向导将为您提供帮助。
  2. 在__dllexport需要去的地方,你已经有了一个宏。 #define要清除任何不是M​​S Windows的内容。您可能希望使用GCC可见性注释。
  3. 在项目设置中找到位置,您可以告诉它为您提供整个编译器和链接器命令行。然后在构建期间将它们写入输出窗口。
  4. 研究MSVC IDE使用的设置。您可以在命令行上执行完全相同的步骤。
  5. 另外,请查看Boost,libSigC ++,wxWidgets,STLport等跨平台库,以获取可在多个平台上编译的代码示例。