Member 4530872 Ответов: 2

Интернационализации, используя компоновщик ошибка с текстом


Привет, я пытаюсь начать с интернационализации с помощью gettext string extractor.

Я создал пример кода следующим образом. Но построить его не удалось.

#include "SupportLanguage.hpp"
#include <iostream>
#include <locale.h>
#define _(STRING) gettext(STRING)

#include "libintl.h"
using namespace std;
class SupportLanguage {

public:    
    int x = 0;    
    void display();
};

void SupportLanguage :: display(){
    cout << " Hello World" << endl;    
    cout<< "Welcome" <<endl;    
    cout << gettext("How are you doing ?") <<endl;
}

int main(){
 
    SupportLanguage sl ;    
    sl.display();
    return 0;
}

сообщение об ошибке:

ЛД DerivedData/Интернационализации/Построить/Продукты/Отладки/Интернационализации.приложение/содержание/Макосе/интернационализации нормальную архитектуру x86_64
компакт-диск /Пользователи/Имя пользователя/рабочего места/интернационализации
экспорт MACOSX_DEPLOYMENT_TARGET=10.11
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -arch x86_64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDK10s/. 11.sdk -L / Users / UserName / WorkPlace / Internationalize / DerivedData / Internationalize / Build / Products / Debug -F / Users / UserName / WorkPlace / Internationalize / DerivedData / Internationalize / Build / Products / Debug -filelist / Users / UserName / WorkPlace / Internationalize / DerivedData / Internationalize / Build / Intermediates / Internationalise.build / Debug / Internationalise.build / Objects-normal / x86_64 / Internationalise.LinkFileList -Xlinker -rpath -Xlinker @executable_path /../ Frameworks -mmacosx-version-min = 10.11 -Xlinker -no_deduplicate -stdlib = libc ++ -Xlinker -dependency_info -Xlinker /Users/UserName/WorkPlace/Internationalise/DerivedData/Internationalise/Build/Intermediates/Internationalise.build/Debug/International_International_Intermediates/Internationalise. .dat -o / Users / Имя пользователя / WorkPl ace / Internationalize / DerivedData / Internationalize / Build / Products / Debug / Internationalise.app / Contents / MacOS / Internationalize

Неопределенные символы для архитектуры x86_64:
"_libintl_gettext", ссылка из:
gettext(char const*) в SupportLanguage. o
ld: символ(ы) не найден для архитектуры x86_64
clang: error: команда компоновщика не удалась с кодом выхода 1 (Используйте -v, чтобы увидеть вызов)

ОС: OS X

В чем тут проблема?

Спасибо

Что я уже пробовал:

Я с трудом понимаю, в чем проблема.

2 Ответов

Рейтинг:
6

Member 4530872

Теперь проблема решена после включения “gettext. h".


Рейтинг:
1

KarstenK

Вы не можете использовать gettext таким образом. Создайте некоторый строковый объект и используйте его в качестве входного параметра.


Member 4530872

Спасибо за ответ, я попробовал Создать Строковый объект следующим образом

string str = " создать объект";

строка tempStr(str);

изменил оператор печати как

cout < & lt; gettext(tempStr) < & lt; endl;

но Xcode (Mac IDE) говорит “ " нет соответствующей функции для gettext”

это похоже на синтаксическую ошибку.