Описание проблемы, когда я пытаюсь переместить мой код с Linux на Windows:
- MinGW при Windows проблемы с компоновщиком
- происходит, когда я вызываю пользовательский класс внутри моего Main. cpp (работает нормально, если я не вызываю конструктор пользовательских классов в Main)
Соответствующие примеры кода:
Person.hpp
class Person
{
public:
Person(const string& iName,
const list<string>& iContactDetails,
);
virtual ~Person();
...
Main. cpp
#include "Person.hpp"
...
int main()
{
...
Person myPerson = Person (myName, myContactDetails); //here is the linker problem
...
return 0;
}
Команда компиляции:
автономный
g++ -o MyProgram.exe Main.cpp -Wall
Makefile (пробовал даже CC вместо CXX, или LDFLAGS = -lgdi32 вместо CXXFLAGS)
EXECUTABLE = MyProgram.exe
CXX = "C:\MinGW\bin\g++.exe"
CXXFLAGS = -Wall // tried LDFLAGS=-lgdi32 as well
src = $(wildcard *.cpp)
obj = $(src:.cpp=.o)
all: myprog
myprog: $(obj)
$(CXX) -o $(EXECUTABLE) $^ $(CXXFLAGS)
.PHONY: clean
clean:
del $(obj) $(EXECUTABLE)
Ошибка:
c:/mingw/bin/../lib/gcc/mingw32/8.2.0/../../../../mingw32/bin/ld.exe: C:\Users\....:Main.cpp:(.text+0x124c): undefined reference to `Person::~Person()'
collect2.exe: error: ld returned 1 exit status
Как итог, я сталкиваюсь с проблемами компоновщика на этапе компиляции MinGW G ++:
Все ссылки на внешние объекты разрешены. Компоненты библиотеки связаны для удовлетворения внешних ссылок на объекты, не определенные в текущем переводе. Все такие выходные данные транслятора собраны в образ программы, который содержит информацию, необходимую для выполнения в среде выполнения.
Я пытался следовать другим подобным проблемам, но, к сожалению, это другие проблемы:
- C ошибка компилятора: неопределенная ссылка на функцию
- Что такое неопределенная ссылка / нерешенная внешняя ошибка символа и как ее исправить?
- возникла ошибка при связывании кодов в c ++
Как мне изменить мой Makefile или мой код? Какие флаги использует MinGW в Windows? Большое спасибо