【发布时间】:2013-08-16 06:44:50
【问题描述】:
我有两个项目(ProjA 和 ProjB)。在 ProjA 中,我创建了包含 TypeA 定义的 TypeA.obj。 ProjB 依赖于 ProjA。在 ProjB 的 Sth.obj 中,我使用 TypeA。
问题出现在 ProjC 的链接器阶段,该阶段链接 TypeA.obj 和 Sth.obj。我收到错误说 TypeA 已在 Sth.obj 中定义。
是否可以在 c++ 中链接多个包含相同符号(在本例中为 TypeA 符号)的 obj 文件?
编辑!
好的,现在我将详细介绍。首先,当我开始这个线程时,我将我的问题描述为与 c++ 相关, 即使我对 c++/cx 有问题。我认为这是 c++ 和 c++/cx 的一般问题。经过一番分析 我不这么认为了。原谅我这个错误。
我的问题很可能只与 c++/cx 有关。
下面我将向您详细介绍我在 Visual Studio 中的解决方案
ProjA
#####MyType.h#####
#pragma once
namespace N1
{
public ref class MyType sealed
{
};
}
#####MyType.cpp#####
#include "pch.h"
#include "MyType.h"
ProjB
#####MyTypeUser.h#####
namespace N2
{
[Windows::Foundation::Metadata::WebHostHidden]
public ref class MyTypeUser sealed
{
public:
void DoSth(N1::MyType){}
}
}
#####MyTypeUser.cpp#####
#include "pch.h"
#include "MyTypeUser.h"
ProjC
links MyType.obj and MyTypeUser.obj
在 ProjC 的链接器阶段,我收到错误,表明 MyType 已在 MyType.obj 或 MyTypeUser 中定义(取决于哪个先链接)。
【问题讨论】:
-
尝试(但失败)SSCCE 可能会提供更多信息。除此之外,这听起来就像您应该使用动态代码模块(例如,Windows 中的 DLL,Linux 中的 .so)来实现 TypeA。跨度>
标签: c++ visual-studio linker dependencies c++-cx