链接器错误与c++;引用另一个库的静态库 我对C++非常陌生,调试链接错误时遇到了问题。我将wxDev-c++与g++编译器一起使用。我创建了一个静态库,链接到一个基本项目。该库最初不包含对外部头文件或库的引用,它只是几个简单的测试函数,将两个double相加并返回值。当链接到测试项目时,它工作得很好。然而,我现在正试图将FTP合并到该库中,并且我现在得到了链接器错误

链接器错误与c++;引用另一个库的静态库 我对C++非常陌生,调试链接错误时遇到了问题。我将wxDev-c++与g++编译器一起使用。我创建了一个静态库,链接到一个基本项目。该库最初不包含对外部头文件或库的引用,它只是几个简单的测试函数,将两个double相加并返回值。当链接到测试项目时,它工作得很好。然而,我现在正试图将FTP合并到该库中,并且我现在得到了链接器错误,c++,linker,static-libraries,undefined-reference,C++,Linker,Static Libraries,Undefined Reference,目前测试函数只是尝试访问相同的简单添加函数进行测试,我甚至没有调用FTP功能,因为我只是尝试正确编译测试项目 图书馆代码: DaFTPLib.h: #ifndef WAVE_H #define WAVE_H #ifdef __BORLANDC__ #pragma hdrstop #endif #ifndef WX_PRECOMP #include <wx/wx.h> #else #include <wx/wxprec.h> #endif #include <wx

目前测试函数只是尝试访问相同的简单添加函数进行测试,我甚至没有调用FTP功能,因为我只是尝试正确编译测试项目

图书馆代码:

DaFTPLib.h:

#ifndef WAVE_H
#define WAVE_H
#ifdef __BORLANDC__
#pragma hdrstop
#endif

#ifndef WX_PRECOMP
#include <wx/wx.h>
#else
#include <wx/wxprec.h>
#endif

#include <wx/protocol/ftp.h>

namespace Wave
{
    class DaFTP
    {
        public:
        DaFTP(char *url, char *login, char *password);
        ~DaFTP();
        const int Download(char* fileName);
        static const void DownloadNCWD(char *url, char *fileName, char *login, char *password);
        static const void DownloadLAMP();
        static double FuncA(double a, double b);
        static double FuncB(double a, double b);

        private:
        char* url, login, password;
        wxFTP ftp;
    };
}

#endif
测试项目代码:

#include <cstdlib>
#include <iostream>

#include "../libDaFTP/DaFTPLib.h"

using namespace std;

int main(int argc, char *argv[])
{
    double a, b, c;

    a = 23.32;
    b = 26.68;

    c = Wave::DaFTP::FuncA(a, b);
    cout << "FuncA val: " << c << endl;

    c = Wave::DaFTP::FuncB(a, b);
    cout << "FuncB val: " << c << endl;
    system("PAUSE");
    return EXIT_SUCCESS;
}
#包括
#包括
#包括“./libDaFTP/daftlib.h”
使用名称空间std;
int main(int argc,char*argv[])
{
双a、b、c;
a=23.32;
b=26.68;
c=波::DaFTP::FuncA(a,b);
库特
但我假设在编译我的库时,任何支持库(如ftp)都会与它一起编译

您所说的仅适用于动态链接库:如果您构建了引用其他库的静态库,则链接到静态库的应用程序或DLL仍必须链接到其他库。静态库只不过是编译的目标代码的集合。在库代码尚未链接到中


将助手库设置为DLL并将其链接到wx库,或者将其保持静态并将使用静态库的每个应用程序链接到wx库。

基于此使其正常工作-我似乎找不到一种方法来确定哪些文件确实需要链接,但我通过链接到一个大的文件列表来编译它,这些文件看起来它覆盖所有的基地。
#include <cstdlib>
#include <iostream>

#include "../libDaFTP/DaFTPLib.h"

using namespace std;

int main(int argc, char *argv[])
{
    double a, b, c;

    a = 23.32;
    b = 26.68;

    c = Wave::DaFTP::FuncA(a, b);
    cout << "FuncA val: " << c << endl;

    c = Wave::DaFTP::FuncB(a, b);
    cout << "FuncB val: " << c << endl;
    system("PAUSE");
    return EXIT_SUCCESS;
}