gpt4 book ai didi

c++ - 对类构造函数的 undefined reference

转载 作者:太空宇宙 更新时间:2023-11-04 11:39:27 25 4
gpt4 key购买 nike

我收到以下错误:

> /tmp/ccYbdvB8.o: In function `main':
> /home/caleb/Documents/dev/cs438/tote2/mp2/manager.cpp:5: undefined
> reference to `TCPConnection::TCPConnection(char const*, char const*)'
> collect2: error: ld returned 1 exit status make: *** [manager] Error 1

我已将 header 包含到我要初始化的类中。所以我在想这可能是我的 makefile?我对编写自定义 makefile 很陌生...

cpp:

#include "tcpcon.h"

const string TCPConnection::Client = "client";
const string TCPConnection::Server = "server";

TCPConnection::TCPConnection(const char* t, const char* p) : target(t), port(p)
{ }

h:

class TCPConnection{    
public:
TCPConnection(const char *target, const char *port);

主要内容:

#include "tcpcon.h"

int main()
{
TCPConnection *TCPCon = new TCPConnection("localhost", "7777");
cout << "Hi\n";
return 0;
}

生成文件:

CC=g++
CCOPTS=-Wall -Wextra -g

OBJS = tcpcon.o
TARGETS = manager

.PHONY: all clean

$(TARGET) : $(OBJS)
$(CC) -o $@ $^ $(CFLAGS) $(LIBS)

all: $(OBJS) $(TARGETS)

clean:
rm -f $(TARGETS) $(OBJS)

%: %.cpp
$(CC) $(CCOPTS) -o $@ $<

最佳答案

事实证明,这个问题可能与几件事有关:

  • 在一处使用 $(TARGET) 而不是 $(TARGETS)
  • 没有将主文件 (manager.cpp) 包含到 OBJS 列表中

我更新的 makefile 如下:

CC=g++
CCOPTS=-Wall -Wextra -g

OBJS = manager.o tcpcon.o
TARGETS = manager

.PHONY: all clean

$(TARGETS) : $(OBJS)
$(CC) -o $@ $^ $(CFLAGS) $(LIBS)

all: $(TARGETS) $(OBJS)

clean:
rm -f $(TARGETS) $(OBJS)

%: %.cpp
$(CC) $(CCOPTS) -o $@ $<

关于c++ - 对类构造函数的 undefined reference ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21924777/

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