Как скомпилировать программу chatscript?
Я пытаюсь скомпилировать и протестировать простой код с помощью программы ChatScript.Как говорится в учебнике здесь: [^]
Цитата:
Шаг внедрения #1 Во-первых, вам нужно будет изменить common.h и скомпилировать систему. Вам нужно добавить все файлы CS .cpp в свой файл.
список сборки.
Найдите // #define NOMAIN 1 и раскомментируйте его. Это позволит вам получить
скомпилируйте свою программу как основную программу, а ChatScript - просто как
коллекция рутин, чтобы сопровождать его.
Шаг встраивания #2 чтобы встраивать CS в клиент, вам нужно выполнить два вызова. Для вызова этих подпрограмм вашему коду потребуется
предшествование этих процедур. Первый InitSystem(АГДС, типа char * переменной argv[],char* в unchangedPath, типа char* readablePath, типа char* writeablePath, USERFILESYSTEM* пользовательские файлы), где вы проходите в
различные параметры командной строки для управления такими вещами, как ведение журнала или
память. Требуются только первые два параметра, а именно:
остаток является необязательным и по умолчанию равен нулю.
Второй звонок-это настоящая рабочая лошадка... инт PerformChat(типа char* пользователей, типа char* встречаешься с char* входящие,типа char* IP,для типа char* выход);
PerformChat сообщает имя пользователя, имя бота (usee), входящий
сообщение, ip-адрес и куда поместить вывод. Строка пользователя
это идентификатор пользователя. Поскольку это встроенное приложение, скорее всего, оно будет
только один пользователь когда-либо, так что это может быть жестко закодировано на все, что вы хотите. Оно
будет отображаться в файле журнала, и если вы загрузите журналы на более поздний срок
анализ, вы предпочтете, чтобы это было уникальным в некотором роде – идентификатор телефона или
что угодно.
IP-это как строка пользователя, форма идентификации, которая появляется в
бревно. Это может быть null или пустой строкой, поскольку идентификатор пользователя
вероятно, этого будет достаточно. Пользователь-это имя чат-бота для разговора
с. Это обычно может быть по умолчанию установлено в нулевую строку, если вы только
есть один бот в системе. Входящее-это сообщение от пользователя. То
при первом запуске сеанса это должна быть нулевая строка, чтобы
сообщите системе, что разговор начинается. После этого вы бы
просто передайте через пользовательский ввод. Выход-это буфер, в котором находится ChatScript
выдает ответ.
Also tutorial says:
Цитата:
Чтобы вызвать эти подпрограммы, ваш код будет нуждаться в их предварительном описании
рутина. Просто скопируйте обычные объявления из ChatScript и поставьте
в начале вашего файла, например,unsigned int InitSystem(int argc, char * argv[],char* unchangedPath,char* readonlyPath, char* writablePath); void InitStandalone(); void PerformChat(char* user, char* usee, char* incoming,char* ip,char* output);
This is my test code written within a file named `main.cpp' :
#include <iostream> #include "common.h" using namespace std; int main(int argc, char * argv[]) { char* input="hi"; char* output; char * userID="one"; InitSystem (0, NULL); void InitStandalone(); PerformChat("one","Harry",input,NULL,output); cout<<output; return 0; }
Что я уже пробовал:
Но когда я пытаюсь скомпилировать свою программу с помощью этой команды:
g++ -std=c++11 main.cpp constructCode.cpp csocket.cpp dictionarySystem.cpp english.cpp englishTagger.cpp evserver.cpp factSystem.cpp functionExecute.cpp infer.cpp javascript.cpp jsmn.cpp json.cpp mainSystem.cpp markSystem.cpp mysql.cpp os.cpp outputSystem.cpp patternSystem.cpp postgres.cpp privatesrc.cpp scriptCompile.cpp secure.cpp spellcheck.cpp systemVariables.cpp tagger.cpp testing.cpp textUtilities.cpp tokenSystem.cpp topicSystem.cpp userCache.cpp userSystem.cpp variableSystem.cpp -o myprogram
Это дает мне кучу ошибок, которые я хочу знать, это из-за моего неправильного подхода или ошибок ChatScript?
^ /tmp/ccCmIdeq.o: In function `LaunchClient(void*)': csocket.cpp:(.text+0x4821): undefined reference to `pthread_create' /tmp/ccCmIdeq.o: In function `InternetServer()': csocket.cpp:(.text+0x4a01): undefined reference to `pthread_create' csocket.cpp:(.text+0x4a1f): undefined reference to `pthread_create' csocket.cpp:(.text+0x4a38): undefined reference to `pthread_join' /tmp/cco3ht5X.o: In function `GetRemoteFileCode(char*)': functionExecute.cpp:(.text+0x1acda): undefined reference to `MongoInit(char*)' functionExecute.cpp:(.text+0x1ada5): undefined reference to `mongoGetDocument(char*, char*, int, bool)' functionExecute.cpp:(.text+0x1aded): undefined reference to `MongoClose(char*)' /tmp/cco3ht5X.o:(.data+0xfe8): undefined reference to `MongoInit(char*)' /tmp/cco3ht5X.o:(.data+0x1008): undefined reference to `MongoClose(char*)' /tmp/cco3ht5X.o:(.data+0x1028): undefined reference to `mongoInsertDocument(char*)' /tmp/cco3ht5X.o:(.data+0x1048): undefined reference to `mongoDeleteDocument(char*)' /tmp/cco3ht5X.o:(.data+0x1068): undefined reference to `mongoFindDocument(char*)' /tmp/ccMiZBIj.o: In function `RunJavaScript(char*, char*, unsigned int)': javascript.cpp:(.text+0xd2): undefined reference to `duk_create_heap' javascript.cpp:(.text+0x12a): undefined reference to `duk_create_heap' javascript.cpp:(.text+0x52d): undefined reference to `duk_push_string_file_raw' javascript.cpp:(.text+0x546): undefined reference to `duk_push_string' javascript.cpp:(.text+0x564): undefined reference to `duk_eval_raw' javascript.cpp:(.text+0x584): undefined reference to `duk_push_string_file_raw' javascript.cpp:(.text+0x59d): undefined reference to `duk_push_string' javascript.cpp:(.text+0x5bb): undefined reference to `duk_compile_raw' javascript.cpp:(.text+0x5ca): undefined reference to `duk_pop' javascript.cpp:(.text+0x5f1): undefined reference to `duk_push_string' javascript.cpp:(.text+0x611): undefined reference to `duk_eval_raw' javascript.cpp:(.text+0x627): undefined reference to `duk_push_string' javascript.cpp:(.text+0x647): undefined reference to `duk_compile_raw' javascript.cpp:(.text+0x656): undefined reference to `duk_pop' javascript.cpp:(.text+0x674): undefined reference to `duk_push_global_object' javascript.cpp:(.text+0x68f): undefined reference to `duk_get_prop_string' javascript.cpp:(.text+0x6ad): undefined reference to `duk_pop' javascript.cpp:(.text+0x743): undefined reference to `duk_pop' javascript.cpp:(.text+0x75b): undefined reference to `duk_pop' javascript.cpp:(.text+0x7cd): undefined reference to `duk_push_string' javascript.cpp:(.text+0x853): undefined reference to `duk_push_int' javascript.cpp:(.text+0x8c1): undefined reference to `duk_push_number' javascript.cpp:(.text+0x908): undefined reference to `duk_pop' javascript.cpp:(.text+0x920): undefined reference to `duk_pop' javascript.cpp:(.text+0x94b): undefined reference to `duk_pcall' javascript.cpp:(.text+0x96d): undefined reference to `duk_safe_to_lstring' javascript.cpp:(.text+0x98e): undefined reference to `duk_pop' javascript.cpp:(.text+0x9d7): undefined reference to `duk_safe_to_lstring' javascript.cpp:(.text+0xa80): undefined reference to `duk_safe_to_lstring' javascript.cpp:(.text+0xac8): undefined reference to `duk_safe_to_lstring' javascript.cpp:(.text+0xaec): undefined reference to `duk_pop' /tmp/ccMiZBIj.o: In function `DeletePermanentJavaScript()': javascript.cpp:(.text+0xb35): undefined reference to `duk_destroy_heap' /tmp/ccMiZBIj.o: In function `DeleteTransientJavaScript()': javascript.cpp:(.text+0xb56): undefined reference to `duk_destroy_heap' /tmp/ccaAkAWG.o: In function `CurlShutdown()': json.cpp:(.text+0x1863): undefined reference to `curl_global_cleanup' /tmp/ccaAkAWG.o: In function `InitCurl()': json.cpp:(.text+0x1882): undefined reference to `curl_global_init' /tmp/ccaAkAWG.o: In function `UrlEncodePiece(char*)': json.cpp:(.text+0x18b5): undefined reference to `curl_easy_init' json.cpp:(.text+0x1902): undefined reference to `curl_easy_escape' json.cpp:(.text+0x193a): undefined reference to `curl_free' json.cpp:(.text+0x1946): undefined reference to `curl_easy_cleanup' /tmp/ccaAkAWG.o: In function `encodeSegment(char**, char*, char*, void*)': json.cpp:(.text+0x1a05): undefined reference to `curl_easy_escape' json.cpp:(.text+0x1a28): undefined reference to `curl_free' /tmp/ccaAkAWG.o: In function `JSONOpenCode(char*)': json.cpp:(.text+0x236d): undefined reference to `curl_easy_init' json.cpp:(.text+0x255e): undefined reference to `curl_easy_setopt' json.cpp:(.text+0x257e): undefined reference to `curl_easy_setopt' json.cpp:(.text+0x25a5): undefined reference to `curl_easy_setopt' json.cpp:(.text+0x25c5): undefined reference to `curl_easy_setopt' json.cpp:(.text+0x25ec): undefined reference to `curl_easy_setopt' /tmp/ccaAkAWG.o:json.cpp:(.text+0x260c): more undefined references to `curl_easy_setopt' follow /tmp/ccaAkAWG.o: In function `JSONOpenCode(char*)': json.cpp:(.text+0x2620): undefined reference to `curl_slist_append' json.cpp:(.text+0x2991): undefined reference to `curl_slist_append' json.cpp:(.text+0x2bc2): undefined reference to `curl_easy_setopt' json.cpp:(.text+0x2c28): undefined reference to `curl_easy_setopt' json.cpp:(.text+0x2c8a): undefined reference to `curl_easy_setopt' json.cpp:(.text+0x2cf7): undefined reference to `curl_easy_setopt' json.cpp:(.text+0x2d26): undefined reference to `curl_easy_setopt' /tmp/ccaAkAWG.o:json.cpp:(.text+0x2d53): more undefined references to `curl_easy_setopt' follow /tmp/ccaAkAWG.o: In function `JSONOpenCode(char*)': json.cpp:(.text+0x2ea7): undefined reference to `curl_easy_perform' json.cpp:(.text+0x2ecb): undefined reference to `curl_easy_getinfo' json.cpp:(.text+0x31cf): undefined reference to `curl_slist_free_all' json.cpp:(.text+0x31de): undefined reference to `curl_easy_cleanup' /tmp/ccHKeYzU.o: In function `CreateSystem()': mainSystem.cpp:(.text+0x10a5): undefined reference to `mongodbparams' mainSystem.cpp:(.text+0x10b5): undefined reference to `mongodbparams' /tmp/ccHKeYzU.o: In function `ProcessArgument(char*)': mainSystem.cpp:(.text+0x2154): undefined reference to `mongodbparams' /tmp/ccHKeYzU.o: In function `InitSystem(int, char**, char*, char*, char*, USERFILESYSTEM*, void (*)(char*), void (*)(char*))': mainSystem.cpp:(.text+0x27a1): undefined reference to `mongodbparams' mainSystem.cpp:(.text+0x31de): undefined reference to `mongodbparams' /tmp/ccHKeYzU.o:mainSystem.cpp:(.text+0x31e7): more undefined references to `mongodbparams' follow /tmp/ccHKeYzU.o: In function `InitSystem(int, char**, char*, char*, char*, USERFILESYSTEM*, void (*)(char*), void (*)(char*))': mainSystem.cpp:(.text+0x31ec): undefined reference to `MongoSystemInit(char*)' /tmp/ccHKeYzU.o: In function `PartiallyCloseSystem()': mainSystem.cpp:(.text+0x328e): undefined reference to `MongoSystemRestart()' /tmp/ccHKeYzU.o: In function `CloseSystem()': mainSystem.cpp:(.text+0x32a9): undefined reference to `MongoSystemShutdown()' /tmp/ccHKeYzU.o: In function `Restart()': mainSystem.cpp:(.text+0x5f7f): undefined reference to `mongodbparams' mainSystem.cpp:(.text+0x5f88): undefined reference to `mongodbparams' mainSystem.cpp:(.text+0x5f8d): undefined reference to `MongoSystemInit(char*)' /tmp/cc5qQNdp.o: In function `mysqlUserRead(void*, unsigned long, unsigned long, _IO_FILE*)': mysql.cpp:(.text+0xe5): undefined reference to `mysql_stmt_init' mysql.cpp:(.text+0x10c): undefined reference to `mysql_error' mysql.cpp:(.text+0x14e): undefined reference to `mysql_stmt_prepare' mysql.cpp:(.text+0x16b): undefined reference to `mysql_stmt_error' mysql.cpp:(.text+0x1fe): undefined reference to `mysql_stmt_bind_param' mysql.cpp:(.text+0x21b): undefined reference to `mysql_stmt_error' mysql.cpp:(.text+0x241): undefined reference to `mysql_stmt_execute' mysql.cpp:(.text+0x25e): undefined reference to `mysql_stmt_error' mysql.cpp:(.text+0x284): undefined reference to `mysql_stmt_store_result' mysql.cpp:(.text+0x2a1): undefined reference to `mysql_stmt_error' mysql.cpp:(.text+0x2c7): undefined reference to `mysql_stmt_num_rows' mysql.cpp:(.text+0x360): undefined reference to `mysql_stmt_bind_result' mysql.cpp:(.text+0x37d): undefined reference to `mysql_stmt_error' mysql.cpp:(.text+0x3a3): undefined reference to `mysql_stmt_fetch' mysql.cpp:(.text+0x3ea): undefined reference to `mysql_stmt_error' mysql.cpp:(.text+0x420): undefined reference to `mysql_stmt_error' /tmp/cc5qQNdp.o: In function `mysqlUserWrite(void const*, unsigned long, unsigned long, _IO_FILE*)': mysql.cpp:(.text+0x56f): undefined reference to `mysql_stmt_init' mysql.cpp:(.text+0x596): undefined reference to `mysql_error' mysql.cpp:(.text+0x5d8): undefined reference to `mysql_stmt_prepare' mysql.cpp:(.text+0x5f5): undefined reference to `mysql_stmt_error' mysql.cpp:(.text+0x6cb): undefined reference to `mysql_stmt_bind_param' mysql.cpp:(.text+0x6e8): undefined reference to `mysql_stmt_error' mysql.cpp:(.text+0x719): undefined reference to `mysql_stmt_execute' mysql.cpp:(.text+0x731): undefined reference to `mysql_stmt_error' mysql.cpp:(.text+0x747): undefined reference to `mysql_stmt_errno' mysql.cpp:(.text+0x784): undefined reference to `mysql_stmt_affected_rows' mysql.cpp:(.text+0x7c0): undefined reference to `mysql_stmt_init' mysql.cpp:(.text+0x7e7): undefined reference to `mysql_error' mysql.cpp:(.text+0x829): undefined reference to `mysql_stmt_prepare' mysql.cpp:(.text+0x846): undefined reference to `mysql_stmt_error' mysql.cpp:(.text+0x91c): undefined reference to `mysql_stmt_bind_param' mysql.cpp:(.text+0x939): undefined reference to `mysql_stmt_error' mysql.cpp:(.text+0x95f): undefined reference to `mysql_stmt_execute' mysql.cpp:(.text+0x97c): undefined reference to `mysql_stmt_error' mysql.cpp:(.text+0x9a2): undefined reference to `mysql_stmt_affected_rows' mysql.cpp:(.text+0x9c7): undefined reference to `mysql_stmt_error' /tmp/cc5qQNdp.o: In function `MySQLUserFilesCode()': mysql.cpp:(.text+0xa09): undefined reference to `mysql_init' mysql.cpp:(.text+0xa66): undefined reference to `mysql_real_connect' mysql.cpp:(.text+0xa91): undefined reference to `mysql_error' /tmp/cc5qQNdp.o: In function `MySQLInitCode(char*)': mysql.cpp:(.text+0xb45): undefined reference to `mysql_init' mysql.cpp:(.text+0xb72): undefined reference to `mysql_real_connect' mysql.cpp:(.text+0xb8c): undefined reference to `mysql_error' mysql.cpp:(.text+0xbc3): undefined reference to `mysql_query' mysql.cpp:(.text+0xbd8): undefined reference to `mysql_error' mysql.cpp:(.text+0xc0a): undefined reference to `mysql_use_result' mysql.cpp:(.text+0xc24): undefined reference to `mysql_fetch_row' mysql.cpp:(.text+0xc5b): undefined reference to `mysql_free_result' mysql.cpp:(.text+0xc67): undefined reference to `mysql_close' /tmp/cc9CRv1C.o: In function `PostgresShutDown()': postgres.cpp:(.text+0x1b): undefined reference to `PQfinish' /tmp/cc9CRv1C.o: In function `DBInitCode(char*)': postgres.cpp:(.text+0x249): undefined reference to `PQconnectdb' postgres.cpp:(.text+0x25f): undefined reference to `PQstatus' postgres.cpp:(.text+0x27b): undefined reference to `PQerrorMessage' /tmp/cc9CRv1C.o: In function `pguserRead(void*, unsigned long, unsigned long, _IO_FILE*)': postgres.cpp:(.text+0x750): undefined reference to `PQexecParams' postgres.cpp:(.text+0x764): undefined reference to `PQresultStatus' postgres.cpp:(.text+0x785): undefined reference to `PQclear' postgres.cpp:(.text+0x7ad): undefined reference to `PQntuples' postgres.cpp:(.text+0x7d8): undefined reference to `PQgetvalue' postgres.cpp:(.text+0x7fa): undefined reference to `PQclear' /tmp/cc9CRv1C.o: In function `pguserWrite(void const*, unsigned long, unsigned long, _IO_FILE*)': postgres.cpp:(.text+0x9c9): undefined reference to `PQexecParams' postgres.cpp:(.text+0x9dd): undefined reference to `PQresultStatus' postgres.cpp:(.text+0x9ec): undefined reference to `PQclear' postgres.cpp:(.text+0xa27): undefined reference to `PQexecParams' postgres.cpp:(.text+0xa3b): undefined reference to `PQresultStatus' postgres.cpp:(.text+0xa4a): undefined reference to `PQclear' /tmp/cc9CRv1C.o: In function `PGUserFilesCode()': postgres.cpp:(.text+0xb32): undefined reference to `PQconnectdb' postgres.cpp:(.text+0xb48): undefined reference to `PQstatus' postgres.cpp:(.text+0xbb3): undefined reference to `PQconnectdb' postgres.cpp:(.text+0xbc9): undefined reference to `PQstatus' postgres.cpp:(.text+0xc14): undefined reference to `PQexec' postgres.cpp:(.text+0xc2a): undefined reference to `PQresultStatus' postgres.cpp:(.text+0xc5a): undefined reference to `PQerrorMessage' postgres.cpp:(.text+0xc70): undefined reference to `PQstatus' postgres.cpp:(.text+0xcce): undefined reference to `PQconnectdb' postgres.cpp:(.text+0xce4): undefined reference to `PQstatus' postgres.cpp:(.text+0xd8f): undefined reference to `PQexec' postgres.cpp:(.text+0xda5): undefined reference to `PQresultStatus' postgres.cpp:(.text+0xdd5): undefined reference to `PQerrorMessage' /tmp/cc9CRv1C.o: In function `DBExecuteCode(char*)': postgres.cpp:(.text+0x1133): undefined reference to `PQexec' postgres.cpp:(.text+0x1149): undefined reference to `PQresultStatus' postgres.cpp:(.text+0x117d): undefined reference to `PQerrorMessage' postgres.cpp:(.text+0x120f): undefined reference to `PQclear' postgres.cpp:(.text+0x127f): undefined reference to `PQntuples' postgres.cpp:(.text+0x1294): undefined reference to `PQnfields' postgres.cpp:(.text+0x12fb): undefined reference to `PQftype' postgres.cpp:(.text+0x134a): undefined reference to `PQgetvalue' postgres.cpp:(.text+0x138a): undefined reference to `PQclear' postgres.cpp:(.text+0x16ab): undefined reference to `PQclear' collect2: error: ld returned 1 exit status
Richard MacCutchan
Вы забыли добавить все имена внешних библиотек в параметры компоновщика для gcc, чтобы связать объектные файлы.