如何在 Visual Studio 中测试已编译的 DLL(或生成多个可执行文件)?
Posted
技术标签:
【中文标题】如何在 Visual Studio 中测试已编译的 DLL(或生成多个可执行文件)?【英文标题】:How to test compiled DLLs in Visual Studio (or produce several executables)? 【发布时间】:2017-09-12 06:18:59 【问题描述】:我正在开发一个需要定期测试和分析的共享库。主要目标平台是 Linux(通常),所以我们的团队选择了自动工具(auto[scan,conf,make] + libtool + pkg-config)作为构建系统。然后客户决定他也想在 Windows 上安装他的软件。所以我添加了一个视觉工作室解决方案。该库在 Windows 上也可以编译、链接和运行良好,尽管我的开发周期缺乏在 Windows 上的适当测试。
我在 Linux 上使用 automake 的测试套件,测试如下:
make check -j2
它编译了 10 个可执行文件(客户端服务器对),这些可执行文件链接到我的库(已经在同一个构建系统上构建)并运行它们(成对,有序)。输出是:
make[3]: Entering directory 'somefakepath/libfoo/test'
PASS: tcp_client
PASS: tcp_server
PASS: tcp_client_control
PASS: tcp_server_control
PASS: udp_client
PASS: udp_server
PASS: udp_client_raw
PASS: udp_server_raw
SKIP: udp_client_rtp
SKIP: udp_server_rtp
========================================================
Testsuite summary for libfoo 5.0.1
========================================================
# TOTAL: 10
# PASS: 8
# SKIP: 2
# XFAIL: 0
# FAIL: 0
# XPASS: 0
# ERROR: 0
========================================================
问题是我找不到在 Visual Studio 中执行相同操作的方法。我可以在解决方案中添加另一个项目(使可执行文件而不是库),但据我所知,不可能从 Visual Studio [1]、[2] 的单个项目中生成多个可执行文件。而且添加十个项目感觉不对,每个项目的许多配置参数都设置为相同的值......而且选择具有多个线程的单个可执行文件也不是很好(我将不得不更改很多行,合并许多 [=10] 个文件)。
那么我如何在 Visual Studio 上测试我的库?或者可能从单个项目中的多个文件生成多个可执行文件? (我可以手动运行)
【问题讨论】:
【参考方案1】:如果您的可执行文件之间的唯一区别是一些条件编译宏,那么您应该创建一个具有多个配置的单个可执行项目(即 udp_client_raw 配置、udp_server_raw 配置等)。如果它们在其他方面有所不同,您可能仍需要创建单独的项目。请注意,无需将许多配置参数设置为相同的值 - 您可以制作一次属性表,然后将其附加到所有项目。
从单个项目生成多个可执行文件没有问题。您只需使用 Visual Studio 中的批处理构建或使用命令行中的 msbuild 一次构建多个配置。也可以设置一个项目,将它们成对启动以进行测试。
【讨论】:
不。我的可执行文件非常不同,客户端/服务器程序,在预定义的协议上进行通信...... @sorush-r 然后采取第二种方法并创建几个项目。以上是关于如何在 Visual Studio 中测试已编译的 DLL(或生成多个可执行文件)?的主要内容,如果未能解决你的问题,请参考以下文章
Visual Studio:如果启用了编译器选项,如何测试(在代码/静态断言中)
通过 SWIG 和 Visual Studio 2015 在 Java 中使用已编译的 DLL