代码之家  ›  专栏  ›  技术社区  ›  kshahar

在VisualStudio2005中重用对象文件

  •  2
  • kshahar  · 技术社区  · 17 年前

    情况如下:

    我试着用同样的方法 中间目录 对于这两个项目(因此对象文件位于同一目录中)和使用VS2005的引用功能(右键单击项目-->引用-->添加新引用…),但它不起作用-我仍然收到链接错误(LNK2001)。

    编辑: 我知道在两个项目中使用同一个对象文件是可能的,我以前看过,但忘记了如何使用。

    编辑: 我决定将文件放在两个项目中,因此它们被编译两次。事实证明,“引用”特性是自动工作的——但只适用于静态库项目。

    5 回复  |  直到 16 年前
        1
  •  2
  •   Mitch Wheat    17 年前

    我不明白您为什么不想在dll项目中构建它。只要两个项目使用相同的源文件,它们都将生成相同的目标文件(假设编译器选项的设置方式相同)。

    如果您想在不导出类本身的情况下测试DLL(我假定这是因为在DLL中导出类通常是一个坏主意),请考虑从DLL导出“工厂”函数。它的签名如下:

    extern "C" MyClass *CreateMyClass();
    

        2
  •  1
  •   user32378    17 年前

    对包含要测试的类的程序集使用InternalsVisibleToAttribute属性。然后,如果您引用此程序集,您将能够测试该类,即使对于其他程序集,这些类型是“不可见的”。魔术

    以下是要使用的属性的MSDN引用。。。

    http://msdn.microsoft.com/en-us/library/system.runtime.compilerservices.internalsvisibletoattribute.aspx

        3
  •  1
  •   Paul Becherer    13 年前

    我在这里要做的是在测试项目中,在“头文件”和“源文件”的旁边,制作一个额外的“过滤器”的“对象文件”,并将所有必要的.obj文件放在其中(顺便说一下,如果它们已经生成的话,这会更容易)。这在这里似乎很管用。在这里,我们还将其用于单元测试,在某些地方,当将同一个源文件用于两个不同的DLL时,不必编译两次。

        4
  •  0
  •   Anthony Cramp    17 年前

    我认为您还需要将.obj文件显式添加到项目链接器设置中的其他依赖项列表中。

        5
  •  0
  •   Community Mohan Dere    9 年前
    推荐文章