0

我在 MSVS 2010 Express 中有一个 c++ 项目。我一直计划编写几个单元测试来验证这个项目。现在他们遵循以下路线:

#include "header.h" //Header is the header for the source I want to test

void testSomeFunction()
{
    //Call function (from external src, prototype in header.h)
    //Save output to file
}

int main()
{
    testSomeFunction();
    return 0;
}

我在我的项目之外创建这些源文件,因为我希望能够将它们中的每一个作为单独的可执行文件运行,但是我无法让 Microsoft 链接器链接它们。

到目前为止,这是我的问题(CMD 输出):

cl ut_Converter.cpp Converter.obj

ut_Converter.cpp
c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE\xlocale(323) : warning C4530: C++ exception handler used, but unwind semantics are not enabled. Specify /EHsc

Microsoft (R) Incremental Linker Version 10.00.40219.01
Copyright (C) Microsoft Corporation.  All rights reserved.

/out:ut_Converter.exe
ut_Converter.obj
Converter.obj
Converter.obj : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '2' doesn't match value '0' in ut_Converter.obj
Converter.obj : fatal error LNK1313: pure module detected; cannot link with ijw/native modules

我从来没有真正使用过微软的产品,我熟悉使用 GNU 工具 GCC 和 make 但我必须使用微软的工具,我不知道它们是如何工作的。

也许我打算以愚蠢的方式构建这些测试,但这是我现在能想到的最好的方式。

这就是我想要做的:

  1. 将我项目中的源文件编译成目标文件
  2. 将我的测试文件编译成目标文件
  3. 将测试对象文件与适当的项目对象文件链接以生成测试可执行文件

我该怎么做呢?(我猜我需要设置一些设置以使所有内容兼容,但我不知道它们是什么或如何设置它们)

额外:我知道它提到了调试级别,但我愿意打赌会有其他不兼容的设置。有没有办法找出程序中的设置,以便在运行时将它们传递给 cl.exe?

编辑:当我说命令提示符时,我的意思是 Visual Studio 附带的所有环境变量设置。

4

1 回答 1

2

您是否尝试过进入程序/Microsoft Visual .../...工具/...命令提示符,并从设置了环境变量的 dos 控制台窗口运行?

于 2015-01-20T02:55:45.807 回答