Проблемы X11 при использовании заголовка CImg в XCode на Mac OSX 10.11.6

Я добавил X11 в свои пути поиска заголовков, пути поиска библиотек и связал двоичный файл с библиотекой X11 в настройках сборки и этапах сборки в XCode, однако я все еще получаю ошибки, показанные на рисунке ниже. Я на 99,999% уверен, что проблема в X11, потому что, когда я отключаю возможности отображения, предупреждений нет. Любые идеи о том, что я могу сделать дальше?

введите здесь описание изображения настройки xcode1

настройка xcode2

настройки xcode3

настройки xcode4

ошибки в XCode


person Tiffany Montgomery    schedule 20.01.2018    source источник
comment
Как именно вы добавили X11 в путь поиска вашей библиотеки? Это ошибка компоновщика, поэтому, скорее всего, компоновщик просто не может найти ваши библиотеки X11.   -  person saagarjha    schedule 21.01.2018
comment
Перешел к настройкам сборки и добавил /opt/X11/include/X11, /opt/X11/lib, /opt/X11/include в мои заголовки и пути поиска библиотеки, и я перешел к этапам сборки и добавил X11 в Link Binary с Библиотеки   -  person Tiffany Montgomery    schedule 21.01.2018
comment
Также некоторые из путей, включенных в файл CImg, были неверными. Например, путь к файлу XLib.h — X11/include/X11/XLib.h, а не просто X11/XLib.h. Я все это исправил, но все еще получаю те же ошибки, что и здесь.   -  person Tiffany Montgomery    schedule 21.01.2018
comment
Пожалуйста, покажите снимок экрана с настройками компоновщика.   -  person Mark Setchell    schedule 23.01.2018
comment
@MarkSetchell Только что отредактировано. Я также получаю разные ошибки в файле locale.h. Их тоже опубликую.   -  person Tiffany Montgomery    schedule 23.01.2018
comment
Я полагаю, вы установили XQuartz?   -  person Mark Setchell    schedule 23.01.2018
comment
Ага. Я могу скомпилировать программу с помощью clang в терминале.   -  person Tiffany Montgomery    schedule 23.01.2018


Ответы (1)


Я думаю, что у вас немного неправильные настройки сборки. Вот очень простая программа для начала — вы можете выбрать отображение файлов PNG, TIFF или JPEG, используя libpng, libtiff или libjpeg, которые, как я предполагаю, вы установили с помощью homebrew с помощью:

brew install libpng libjpeg libtiff

Вот код:

#define cimg_display  1
#define cimg_use_png  1
#define cimg_use_tiff 1
#define cimg_use_jpeg 1

#include "CImg.h"
using namespace cimg_library;

int main() {
    // Load image
    CImg<unsigned char> image("/Users/mark/Desktop/test.tif");
    
    // CImg<unsigned char> image("/Users/mark/Desktop/test.png");
    // CImg<unsigned char> image("/Users/mark/Desktop/test.jpg");
    // CImg<unsigned char> image("/Users/mark/Desktop/test.pnm");

    image.display();
}

Единственные необходимые настройки сборки следующие:

введите здесь описание изображения

а также

введите здесь описание изображения

Один /Users/mark/src/CImg предназначен для файла заголовка CImg.h, которым я управляю с помощью git, поддерживая его синхронизацию с дистрибутивом CImg на GitHub.

Обратите внимание на следующее:

  • CImg может читать изображения NetPBM (PGM/PBM/PPM и фактически PFM) без дополнительного кода, библиотек или зависимостей.

  • CImg может читать TIFF, PNG, JPEG без использования ImageMagick, если вы #define cimg_use_tiff или #define cimg_use_png или #define cimg_use_jpeg, пока вы устанавливаете путь включения пути к библиотеке и имена библиотек, как я показал выше.

  • CImg может прочитать все, что может прочитать ImageMagick, если вы установите этот пакет.

person Mark Setchell    schedule 23.01.2018
comment
Ура! Это избавило от ошибок локали! Теперь XCode не может найти файл XLib.h. Файл находится в /opt/X11/include/X11/, но я не знаю, как сообщить Xcode об этом... Обновление: если я заменю путь, включенный в CImg, на абсолютный путь к файлу Xlib.h, он сработает. Я чувствую, что мне не нужно этого делать, поскольку другим не пришлось переписывать код CImg. - person Tiffany Montgomery; 23.01.2018
comment
header search path должно быть установлено на /opt/X11/include, потому что внутри CImg.h он делает #include <X11/XLib.h, который прикрепляется к концу вашего пути поиска. - person Mark Setchell; 23.01.2018
comment
Что это означает, когда значение ‹Несколько значений› находится рядом с путями поиска в заголовке? Я только набрал /opt/X11/include, но он отображает несколько значений. Будет ли это иметь влияние? - person Tiffany Montgomery; 23.01.2018
comment
Просто прочитайте ваше обновление. Я получаю еще 20 ошибок в файле cwchar (Нет члена с именем x в глобальном пространстве имен) после добавления нового заголовка и путей к библиотеке. Есть ли что-то еще, что мне нужно установить? - person Tiffany Montgomery; 24.01.2018
comment
Просто предположение, но пробовали ли вы поместить все эти заголовки в пути поиска заголовков пользователей? - person saagarjha; 24.01.2018
comment
Ага. Это не помогает. - person Tiffany Montgomery; 24.01.2018
comment
Не могли бы вы попробовать создать небольшой, свежий, совершенно новый проект Xcode, просто с предложенными настройками, которые я вам дал, и с кодом, который я вам дал? Я боюсь, что вы, возможно, в отчаянии перепробовали множество разных вещей и оставили для чего-то значение, отличное от значения по умолчанию... - person Mark Setchell; 24.01.2018
comment
Я сделал новый проект с заданными настройками и получил те же ошибки. Я думаю, что проблема может быть в чем-то вне Xcode. Я собираюсь переустановить XQuartz и посмотреть, будет ли это иметь значение. - person Tiffany Montgomery; 24.01.2018
comment
Если вы изменили CImg.h, возьмите и его новую копию - ее вообще не нужно менять. - person Mark Setchell; 24.01.2018