gpt4 book ai didi

传递给类构造函数的 C++ 字符串 - 链接器错误

转载 作者:行者123 更新时间:2023-11-28 02:20:09 24 4
gpt4 key购买 nike

我是一名 C# 程序员,在 VS 2008 中从事 C++ 项目,尝试创建一个对象的实例并将一个字符串作为构造函数的参数传递给它。当我这样做时,我遇到了链接器错误,我真的很难诊断这些错误。

我得到的链接器错误是

2>TestMyProj.obj : error LNK2028: unresolved token (0A0002B9) "public: __thiscall myNamespace::myClass::myClass(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >)" (??0myClass@myNamespace@@$$FQAE@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z) referenced in function "int __cdecl main(void)" (?main@@$$HYAHXZ)
2>TestMyProj.obj : error LNK2019: unresolved external symbol "public: __thiscall myNamespace::myClass::myClass(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >)" (??0myClass@myNamespace@@$$FQAE@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z) referenced in function "int __cdecl main(void)" (?main@@$$HYAHXZ)
2>..\MyProj\TestMyProj.dll : fatal error LNK1120: 2 unresolved externals

来自试图创建类实例的项目 (TestMyProj)。 MyProj 编译正常。代码如下:

我的项目.cpp

#include "MyProj.h"

namespace myNamespace
{
myClass::myClass(string inString){}
};

MyProj.h:

#pragma once
#include <string>
using namespace std;

namespace myNamespace
{
class myClass
{
public:
myClass::myClass(string inString);

};

}

我尝试创建 MyClass 类实例的代码位于同一解决方案的另一个项目中

TestMyProj.cpp:

#include <string>
#include "../MyProj/MyProj.h"


int main()
{
myNamespace::myClass("");
return 0;
}

我显然误解了一些基本的东西,可能是关于头文件的性质。我主要处理以前编码的示例。

谁能指出我做错了什么?

最佳答案

您需要将项目链接在一起。在 C# 中,当您引用一个类时,它会自动链接程序集。使用 C++,您必须通过包含 .h 文件、链接项目来引用该类。

解决方案只是将项目收集在一起的方式,对编译器没有任何意义。

老实说,我是静态链接库的粉丝,但如果你真的想创建一个 dll,请参阅 https://msdn.microsoft.com/en-gb/library/ms235636.aspx以及名为“在应用程序中使用类库中的功能”的部分。

关于传递给类构造函数的 C++ 字符串 - 链接器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32822350/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com