Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 手工生成的Makefile中未定义的引用_Windows_Makefile_G++_Gtkmm - Fatal编程技术网

Windows 手工生成的Makefile中未定义的引用

Windows 手工生成的Makefile中未定义的引用,windows,makefile,g++,gtkmm,Windows,Makefile,G++,Gtkmm,我对这个生成文件有问题,我得到一个奇怪的gtkmm错误 CXX=g++ MYSQL_DIR=C:/Program\ Files/MySQL/Connector\ C++\ 1.1/ # -W -Wall -Wextra -Werror CXXFLAGS=-Wall -std=c++11 $(shell pkg-config --cflags gtkmm-3.0) -I$(MYSQL_DIR)/include -IC:/local/boost_1_72_0 OBJECTS= main.o LDL

我对这个生成文件有问题,我得到一个奇怪的gtkmm错误

CXX=g++
MYSQL_DIR=C:/Program\ Files/MySQL/Connector\ C++\ 1.1/
# -W -Wall -Wextra -Werror
CXXFLAGS=-Wall -std=c++11 $(shell pkg-config --cflags gtkmm-3.0) -I$(MYSQL_DIR)/include -IC:/local/boost_1_72_0
OBJECTS= main.o 
LDLIBS=$(shell pkg-config --libs gtkmm-3.0) -LC:/local/boost_1_72_0/libs -L$(MYSQL_DIR)/lib -LC:/Program\ Files/MySQL/Connector\ C++\ 1.1/lib/opt -lmysqlcppconn -lmysqlcppconn-static

AffittiApp: $(OBJECTS) 
    $(CXX) $(OBJECTS) -o AffittiApp 

main.o: MainWindow.h MainWindow.cpp Affitto.h Affitto.cpp Conguaglio.h Conguaglio.cpp Inquilino.h Inquilino.cpp Stabile.h Stabile.cpp
    $(CXX)  $(CXXFLAGS)  $(LDLIBS) -c main.cpp MainWindow.cpp Affitto.cpp Conguaglio.cpp Inquilino.cpp Stabile.cpp

clean :
    rm -f AffittiApp
    rm *.o
    echo "pulizia completata"
使用这个g++命令,一切都很好

g++ -Wall -std=c++11 Conguaglio.h Conguaglio.cpp Stabile.h Stabile.cpp Inquilino.h Inquilino.cpp Affitto.h Affitto.cpp MainWindow.h MainWindow.cpp main.cpp `pkg-config gtkmm-3.0 --cflags --libs` -IC:/Program\ Files/MySQL/Connector\ C++\ 1.1/include -LC:/Program\ Files/MySQL/Connector\ C++\ 1.1/lib -IC:/local/boost_1_72_0 -LC:/local/boost_1_72_0/libs -LC:/Program\ Files/MySQL/Connector\ C++\ 1.1/lib/opt -lmysqlcppconn -lmysqlcppconn-static
我得到的错误是:

 main.o:main.cpp:(.text+0x35): undefined reference to `Glib::ustring::ustring(char const*)'
    main.o:main.cpp:(.text+0x67): undefined reference to `Gtk::Application::create(int&, char**&, Glib::ustring const&, Gio::ApplicationFlags)'
    main.o:main.cpp:(.text+0x76): undefined reference to `Glib::ustring::~ustring()'
    main.o:main.cpp:(.text+0x82): undefined reference to `MainWindow::MainWindow()'
    main.o:main.cpp:(.text+0xa0): undefined reference to `Gtk::Application::run(Gtk::Window&)'
    main.o:main.cpp:(.text+0xb1): undefined reference to `MainWindow::~MainWindow()'
    main.o:main.cpp:(.text+0xd6): undefined reference to `Glib::ustring::~ustring()'
    main.o:main.cpp:(.text+0xf0): undefined reference to `MainWindow::~MainWindow()'
    exe: error: ld returned 1 exit status
       make: *** [Makefile:11: AffittiApp] Error 1

我在Makefile中出错了什么?谁能帮帮我吗?谢谢

因此,我发现了问题……我必须在AffittiApp部分中放入$(LDLIBS)。像这样(完整的代码)


我写了这个答案,以防有人有同样的问题。

你引用了
MYSQL\u DIR
,然后添加了
/include
<代码>生成语法不使用引号。此外,您还可以为所有.cpp-s创建一个通用模式规则。谢谢,但我仍然会遇到错误。我用更多的细节编辑了这篇文章
    CXX=g++
    MYSQL_DIR=C:/Program\ Files/MySQL/Connector\ C++\ 1.1/
    CXXFLAGS=-Wall -std=c++11 $(shell pkg-config --cflags gtkmm-3.0) -I$(MYSQL_DIR)/include -IC:/local/boost_1_72_0
    OBJECTS= main.o MainWindow.o Affitto.o Inquilino.o Stabile.o Conguaglio.o
    LDLIBS=$(shell pkg-config --libs gtkmm-3.0) -LC:/local/boost_1_72_0/libs -L$(MYSQL_DIR)/lib -L$(MYSQL_DIR)/lib/opt -lmysqlcppconn -lmysqlcppconn-static

    AffittiApp: $(OBJECTS) 
        $(CXX) $(OBJECTS) $(LDLIBS) -o AffittiApp 

    main.o: MainWindow.h MainWindow.cpp Affitto.h Affitto.cpp Conguaglio.h Conguaglio.cpp Inquilino.h Inquilino.cpp Stabile.h Stabile.cpp
        $(CXX)  $(CXXFLAGS) -c main.cpp