【问题标题】:Developing C++ DLL with executable unit test that compiles and links at the same time?使用可同时编译和链接的可执行单元测试开发 C++ DLL?
【发布时间】:2013-02-19 01:49:35
【问题描述】:

我正在 Visual Studio 2012 中开发一个 C++ 项目,该项目使用驱动程序代码与打开的 DMX 盒 (ENTTEC DMX USB PRO) 进行交互。到目前为止,我一直在编写代码并编译为 EXE,因此我可以使用 main() 来运行单元测试。

我想把它移植过来,这样我就有了编译成 .DLL 的设备接口代码,然后是一个单独的源文件,其中包含 C++ 代码来编译链接到 DLL 并调用函数的 EXE运行测试。

基本上,当我去调试时,有没有办法设置 Visual Studio 2012 来生成一个 .DLL 和一个 .exe 调用 .DLL 并一步自动运行 .exe?我是 Visual Studio 的新手,发现它很混乱。

【问题讨论】:

    标签: c++ visual-studio-2010 visual-studio unit-testing dll


    【解决方案1】:

    是的。在您的解决方案中设置两个项目:一个用于您的主要代码(生成 DLL),另一个用于您的可执行文件,您的单元测试所在的位置。然后查看项目依赖项(在 VS2010 的项目菜单下,不确定 2012 年)以使 EXE 依赖于 DLL(这将确保 EXE 在必要时重建/重新链接)。

    在解决方案资源管理器中右键单击 EXE 项目并选择属性。如有必要,您可以在那里设置包含/链接器以访问您的头文件/lib 文件(如果您明确使用 LoadLibrary 或其他东西,则可能没有必要,但我猜您没有这样做)。

    现在在构建事件下的 EXE 项目设置中,添加运行测试的构建后事件。请注意,如果您的 EXE 从 main() 返回的不是 0,VS 可以将其报告为构建中的错误。

    【讨论】:

    • “在解决方案资源管理器中右键单击 EXE 项目并选择属性。如果需要,您可以在其中设置包含/链接器以访问您的头文件/lib 文件”,您能解释一下如何/具体在哪里做呢?
    • 在常规选项卡的 C/C++ 属性中,添加包含目录。在那里,您要确保列出带有标题的文件夹——可以是完整路径或相对路径,也可以使用 $(SolutionDir) 之类的宏。然后,在链接器设置下,在一般(大约一半)下,将“附加库目录”附加到你的后面。然后在链接器的输入页面中,确保列出了与您的 DLL 对应的 .lib。同样,使用宏来提供帮助,并确保为 Debug 和 Release 执行此操作,并为每个宏指向正确的输出文件夹。
    猜你喜欢
    • 2015-01-12
    • 2021-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-27
    相关资源
    最近更新 更多