Ich habe ein Swift-Projekt (Xcode 9.1, macOS 10.13), und ich habe versucht, meine eigene C-Bibliothek mit der ViewController.swift zu verknüpfen, indem Bridging Header für C-Datei mit Swift.Apple Mach-O Linker Error_
Allerdings wurde der comilation Fehler aufgetreten, und das ist Ausgabe:
Undefined symbols for architecture x86_64: "_HTS_Engine_clear", referenced from: _Flite_HTS_Engine_clear in flite_hts_engine.o (maybe you meant: _Flite_HTS_Engine_clear) "_ffeature_string", referenced from: _create_label in flite_hts_engine.o _Flite_Text_Analyzer_get_phoneme in flite_hts_engine.o _Flite_Text_Analyzer_get_word in flite_hts_engine.o "_val_string_n", referenced from: _create_label in flite_hts_engine.o "_HTS_Engine_initialize", referenced from: _Flite_HTS_Engine_initialize in flite_hts_engine.o (maybe you meant: _Flite_HTS_Engine_initialize) "_HTS_Engine_set_speed", referenced from: _Flite_HTS_Engine_set_speed in flite_hts_engine.o (maybe you meant: _Flite_HTS_Engine_set_speed) "_register_cmu_us_kal", referenced from: _Flite_HTS_Engine_synthesize in flite_hts_engine.o _Flite_Text_Analyzer_analysis in flite_hts_engine.o "_relation_head", referenced from: _Flite_HTS_Engine_synthesize in flite_hts_engine.o _Flite_Text_Analyzer_analysis in flite_hts_engine.o _Flite_Text_Analyzer_get_label_data in flite_hts_engine.o "_item_next", referenced from: _Flite_HTS_Engine_synthesize in flite_hts_engine.o _create_label in flite_hts_engine.o _Flite_Text_Analyzer_analysis in flite_hts_engine.o _Flite_Text_Analyzer_get_label_data in flite_hts_engine.o "_utt_relation", referenced from: _Flite_HTS_Engine_synthesize in flite_hts_engine.o _Flite_Text_Analyzer_analysis in flite_hts_engine.o _Flite_Text_Analyzer_get_label_data in flite_hts_engine.o "_HTS_Engine_refresh", referenced from: _Flite_HTS_Engine_synthesize in flite_hts_engine.o "_HTS_Engine_set_volume", referenced from: _Flite_HTS_Engine_set_volume in flite_hts_engine.o (maybe you meant: _Flite_HTS_Engine_set_volume) "_delete_utterance", referenced from: _Flite_HTS_Engine_synthesize in flite_hts_engine.o _Flite_Text_Analyzer_analysis in flite_hts_engine.o _Flite_Text_Analyzer_clear in flite_hts_engine.o "_unregister_cmu_us_kal", referenced from: _Flite_HTS_Engine_synthesize in flite_hts_engine.o _Flite_Text_Analyzer_analysis in flite_hts_engine.o _Flite_Text_Analyzer_clear in flite_hts_engine.o "_HTS_Engine_save_riff", referenced from: _Flite_HTS_Engine_synthesize in flite_hts_engine.o "_flite_synth_text", referenced from: _Flite_HTS_Engine_synthesize in flite_hts_engine.o _Flite_Text_Analyzer_analysis in flite_hts_engine.o "_HTS_Engine_set_msd_threshold", referenced from: _Flite_HTS_Engine_set_msd_threshold in flite_hts_engine.o (maybe you meant: _Flite_HTS_Engine_set_msd_threshold) "_HTS_Engine_set_beta", referenced from: _Flite_HTS_Engine_set_beta in flite_hts_engine.o (maybe you meant: _Flite_HTS_Engine_set_beta) "_HTS_Engine_add_half_tone", referenced from: _Flite_HTS_Engine_add_half_tone in flite_hts_engine.o (maybe you meant: _Flite_HTS_Engine_add_half_tone) "_val_string", referenced from: _create_label in flite_hts_engine.o "_HTS_Engine_set_alpha", referenced from: _Flite_HTS_Engine_set_alpha in flite_hts_engine.o (maybe you meant: _Flite_HTS_Engine_set_alpha) "_HTS_Engine_set_gv_weight", referenced from: _Flite_HTS_Engine_set_gv_weight in flite_hts_engine.o (maybe you meant: _Flite_HTS_Engine_set_gv_weight) "_HTS_Engine_synthesize_from_strings", referenced from: _Flite_HTS_Engine_synthesize in flite_hts_engine.o "_HTS_Engine_set_sampling_frequency", referenced from: _Flite_HTS_Engine_set_sampling_frequency in flite_hts_engine.o (maybe you meant: _Flite_HTS_Engine_set_sampling_frequency) "_HTS_Engine_set_fperiod", referenced from: _Flite_HTS_Engine_set_fperiod in flite_hts_engine.o (maybe you meant: _Flite_HTS_Engine_set_fperiod) "_ffeature_int", referenced from: _create_label in flite_hts_engine.o _Flite_Text_Analyzer_get_nphoneme_in_syllable in flite_hts_engine.o _Flite_Text_Analyzer_get_nsyllable_in_word in flite_hts_engine.o _Flite_Text_Analyzer_get_nword_in_phrase in flite_hts_engine.o _Flite_Text_Analyzer_get_nphrase_in_utterance in flite_hts_engine.o _Flite_Text_Analyzer_get_accent in flite_hts_engine.o _Flite_Text_Analyzer_get_stress in flite_hts_engine.o ... "_HTS_Engine_load", referenced from: _Flite_HTS_Engine_load in flite_hts_engine.o (maybe you meant: _Flite_HTS_Engine_load) "_HTS_Engine_set_audio_buff_size", referenced from: _Flite_HTS_Engine_set_audio_buff_size in flite_hts_engine.o (maybe you meant: _Flite_HTS_Engine_set_audio_buff_size) ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation)
Was mache ich falsch? Ich habe versucht, alle Dateien auf DerivedData zu löschen, auch in meinem Projekt (nach Product/Clean) zu reinigen, aber das Problem nicht geändert.
Nachdem ich die Quelldatei (per Drag & Drop) für alle Bibliotheken in hts_engineLib hinzugefügt hatte, verschwanden die Linkerfehler, dann erschienen 6 Kompilierungsfehler, ich korrigiere sie, aber danach 66 Linkfehler. Ich habe versucht, die Objektdatei (.o) für alle Quelldateien hinzuzufügen, aber der Fehler tritt immer noch auf. vielleicht weil der C Warmer, Wie schreibt man einen C-Wrapper in .c und .h Dateien? – NoraQm
Was waren die typischen Kompilierungs- und Linkerfehler? Wie hast du die Kompilierungsprobleme behoben? Haben Sie dem Projekt O-Dateien hinzugefügt? Das sollte nie gemacht werden, sie sind kein Quellcode. Warum hast du versucht, einen Wrapper um htsEngineLib zu erstellen? Um die Schnittstelle zu vereinfachen, oder ist die Lib in C++? Es gibt eine Menge Informationen über SO und Web im Allgemeinen über das Schreiben von Wrappern. – OmniProg