在Windows中创建共享库(使用MSVC编译器)
Creating shared library in Windows (using MSVC compiler)
我有几个查询,如下所述,关于命令行选项及其在msvc中的行为:
1)如何构建/创建动态库?
假设我有两个文件mul.cpp
和sum.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.dll
和mul.dll
,最后将它们与main.o
链接以使用命令提示符生成可执行文件?
我看到一个描述解决方案的链接
但是它没有解释如何在命令行中使用它。那么我如何创建一个dll
而不用担心手动创建.def
文件或使用__declspec(dllexport)函数?
在链接中提到/DEF
或/DUMBIN
可以用于相同的目的,但是如何在这个例子中使用它呢?
2)我如何实现调试构建相同的例子?
执行以下步骤:
- 在MSVC中创建一个示例DLL和可执行文件一起工作,项目向导将帮助您完成。 在__dlexport需要去的地方,你已经有了一个宏。
- 在项目设置中找到你可以告诉它给你整个编译器和链接器命令行的地方。然后在构建期间将它们写入输出窗口。
- 研究MSVC的IDE使用的设置。您可以在命令行上执行相同的步骤。
#define
为任何不是MS Windows的东西清空。不过,你可能想使用GCC可见性注释。另外,可以查看跨平台库,如Boost, libsigc++, wxWidgets, STLport等,以获取可以在多个平台上编译的代码示例。
相关文章:
- 使用 MSVC 调试类型
- 如何使用MSVC 2019创建和使用Qt 5.14.0自定义小工具插件
- Python C API:使用 MSVC 尝试示例模块时的访问冲突
- 尝试使用 MSVC 从源代码构建 qt 创建器:无法打开包含文件:"stddef.h":没有这样的文件或目录
- 使用 msvc 15 在 Qt5.13 中编译 CUDA 代码
- std::value templated 方法的函数使用 clang 和 g++ 进行编译,但不使用 msvc 进行编译
- 使用MSVC编译的Qt程序在app.exec()上崩溃
- 使用 MSVC 编译时,msdpb* 文件的正确用法是什么?
- constexpr 函数中的 for 循环无法使用 MSVC 19.23 进行编译
- 使用 MSVC 套件时,在 Qt 中正确选择编译器
- 为什么重载运算符不与 std::string 一起使用 msvc /MD 标志
- 使用 msvc /MDd cryptlib.lib 构建 Crypto++ 链接时找不到 cryptopp.lib
- 使用 MSVC C++编译器创建动态大小的数组
- 为什么我不能使用 msvc 在模板类中声明静态 constexpr 变量?
- 为什么使用 MSVC 编译这个不正确的 std::函数初始化?
- 可以在linux程序中使用msvc在windows上构建的boost lib吗
- 使用MSVC 2015上的Windows上使用Google测试
- 使用MSVC 2013的类初始化器中的C++11
- 我的程序在Windows上使用MSVC和G 编译器运行,但在Linux上不运行
- 可视化 编译为 C 源文件作为 C++ 使用 MSVC