链接错误2019:CString参数在MFC和ATL之间传递

时间:2014-02-28 08:44:12

标签: c++ linker-errors atl lnk2019 cppunit

我有两个项目:

  1. Project1:基于ATL COM的项目,其输出是.lib文件(静态库)

  2. Project2:基于MFC的GUI应用程序,它链接到静态库,以便可以使用其中的函数。\

  3. 如果需要,相应文件的.h文件包含在project1中。

    现在从Project2到Project1中的函数的调用正好发生,直到我必须使用以CString作为参数的函数。

    每当有一个CString作为参数的调用(在Project1的代码中实现)时,会弹出一个链接错误,指出它无法链接到该函数。

    当谷歌搜索时,我发现在ATL和MFC框架中CString的实现是不同的。因此,显而易见的解决办法是传递从Project2为ATL实现的CString,因为Project1是基于ATL的。

    所以,当我调用函数时,我从Project2传递CAtlString。但是它给了我相同的链接错误,并且在错误中它传递了CString的MFC版本,尽管我传递了一个CAtlString。

    请有人给我解决方案。

    该项目的更多具体细节,我在下面提供:

    1. ATL项目是一个基于COM的ATL项目,它有许多有用的类和功能。它的输出已设置为.lib文件。如果任何解决方案链接到该.lib文件,它可以访问其中公开的所有方法。

    2. MFC项目是SD(单文档)项目。更具体地说,如果它对您有所影响,MFC应用程序用于CPPUNIT(用于单元测试)。

    3. IDE - Microsoft Visual Studio 2005 版本8.0.50727.762 我不知道ATL和MFC的版本(实际上我不知道如何检查它。如果你也可以在这里帮忙)

    4. 链接错误

      错误LNK2019:未解析的外部符号“public:__ thiscall NamespaceInProject1 :: CClassInProject1 :: CClassInProject1(class ATL :: CStringT&gt;&gt;)”(?? 0CClassInProject1 @ NamespaceInProject1 @@ QAE @ V?$ CStringT @ DV?$ StrTraitMFC_DLL @ DV?$ ChTraitsCRT @D @ ATL @@@@@ ATL @@@ Z)在函数“public:void __thiscall CClassInCPPUNITTester :: TesterFunction_PTC01(void)”中引用(?TesterFunction_PTC01 @ CTestsXPathParser @@ QAEXXZ)ClassInCPPUNITTester.obj < / p>

      NamespaceInProject1 - 在Project1中声明类的命名空间 CClassInProject1 - Project1中我正在测试其功能的类 CClassInCPPUNITTester - Project2中的类,我从中调用类CClassInProject1的函数 TesterFunction_PTC01(void) - 调用Project2函数中的函数。

    5. 我能够完全调用所有不采用CString作为参数的方法。我测试了它们,它们工作得很好。只有当我将CString作为参数时才会出现问题。

    6. 请帮忙

      我已经尝试了之前在Stackoverflow中提供的许多解决方案。他们都没有帮助。

      注意:我在调用时通过值传递CString,而不是通过引用传递。它是一种价值的呼唤。

0 个答案:

没有答案