我正在尝试用另一个项目构建一个项目.那里有很多库,我不确定所需的未引用符号在哪里.
有没有办法.lib在编译时包含所有文件?
我已将该lib目录作为链接器的附加输入,但它要求包含单个.lib文件.是否可以选择.lib在此文件夹中包含所有内容?
我们目前正在尝试将单元测试添加到我们的c ++应用程序中.该应用程序由30个项目组成,可生成29个dll和1个exe.我们使用MSTest来运行我们的单元测试,因为它已经包含在Visual Studio 2010中.
它适用于声明为"公共"的类.这些课程在开头有这个:
#ifdef RESEAU_IMPL
#define CLASS_DECL _declspec(dllexport)
#else
#define CLASS_DECL _declspec(dllimport)
#endif
Run Code Online (Sandbox Code Playgroud)
但对于所有其他类(90%的代码),它们并未公开,因此我们无法在测试中使用它们.
我在google上读过有关InternalVisibleTo属性的内容,但它似乎只适用于c#.NET程序集.我对吗?我也读过宣布我的班级"as_friend",但我不知道该把它放在哪里.
简而言之:我想测试DLL中未导出/公开的类.我怎么做?
谢谢
*编辑*
Gishu评论说,在非托管代码中无法进行单元测试,但这是可能的.请参阅,这是一个测试本机c ++代码的TestMethode.CVersion在C++ MFC中.
[TestMethod]
void AssignationCVersion()
{
CVersion version1234(1,2,3,4);
CVersion version4321(4,3,2,1);
Assert::IsTrue(version1234 != version4321);
version1234 = version4321;
Assert::IsTrue(version1234 == version4321);
};
Run Code Online (Sandbox Code Playgroud)
但似乎不可能的是使用特殊标签来测试内部函数.我是第一个同意测试内部方法不是好的做法,但这些DLL不是实用函数,而是"真实"应用程序的一部分(也许它是糟糕的设计,但它是在15年前完成的).有人对这个问题有所了解吗?