2016-01-15 4 views
0

Я изучаю C++ и решил попробовать создать простой файловый ридер, используя libzip в архивных файлах (например, Word).Компиляция libzip на Mac: Неопределенные символы для архитектуры x86_64

Я недавно установил libzip на моем Macbook, используя настой, но я, кажется, продолжают получать следующий вопрос всякий раз, когда я пытаюсь скомпилировать программу, которая использует libzip:

Undefined symbols for architecture x86_64: 
    "_zip_fopen", referenced from: 
     _main in main-918bfa.o 
    "_zip_open", referenced from: 
     _main in main-918bfa.o 
ld: symbol(s) not found for architecture x86_64 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 
make: *** [a.exe] Error 1 

Команда Я использую для компиляции:

g++ -g main.cpp -std=c++11 -I/usr/local/Cellar/libzip/0.11.2/include -I/usr/local/Cellar/libzip/0.11.2/lib/libzip/include -L/usr/local/Cellar/libzip/0.11.2/lib -o ../a.exe 

main.cpp:

#include <iostream> 
#include <fstream> 
#include <zip.h> 
#include <zlib.h> 

using namespace std; 
int numArgs = 2; 

int main(int argc, char** argv){ 
    // Parse command line arguments 
    if(argc != numArgs){ 
     std::cout << "Incorrect number of arguments provided.\n"; 
     std::cout << "Command line syntax: fileReader.exe inputFile" << endl; 
     exit(0); 
    } 

    // Try out libzip functionality 
    std::string inputDocument(argv[1]); 
    int err = 0; 
    zip* z = zip_open(inputDocument.c_str(), 0, &err); 
    if(z == NULL) { 
     printf("Could not read docx file. Error code: %d", err); 
     exit(-1); 
    } 
    zip_file* contentTypes = zip_fopen(z, "[Content_Types].xml", ZIP_FL_UNCHANGED); 
    exit(0); 
} 

ответ

1

Не похож на ваш, включая библиотеку libzip в команде компиляции. Попробуйте добавить -lzip в команду g ++

+0

Это сработало, приветствует! Я предполагаю, что это говорит компилятору использовать libzip.a при компиляции программы? – Calculus5000

+1

Да, это говорит ему искать либо libzip.a (для статической компиляции), либо libzip.dylib (для динамического) – cimarron

Смежные вопросы