我有两个项目(ProjA 和 ProjB)。在 ProjA 中,我创建了包含 TypeA 定义的 TypeA.obj。ProjB 依赖于 ProjA。在 ProjB 的 Sth.obj 中,我使用 TypeA。
问题出现在 ProjC 的链接器阶段,该阶段链接 TypeA.obj 和 Sth.obj。我收到错误说 TypeA 已在 Sth.obj 中定义。
是否可以在 C++ 中链接多个 obj 文件,每个文件都包含相同的符号(在本例中为 TypeA 符号)?
编辑!
好的,现在我将更详细地介绍。首先,当我开始这个线程时,我将我的问题描述为与 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 中定义的错误(取决于首先链接的内容)。