Member 13376650 Ответов: 1

Как скомпилировать программу 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, чтобы связать объектные файлы.

1 Ответов

Рейтинг:
0

OriginalGriff

Вам нужно вернуться к тому, откуда вы взяли учебник: либо у вас отсутствуют важные включаемые файлы, либо вы используете неправильный компилятор, либо у вас просто нет всего исходного кода.

Мы не можем сказать - мы даже не знаем, откуда вы это взяли, поэтому мы даже не можем начать помогать вам! Поговорите с авторами: они написали это, они должны знать, как это исправить.


Member 13376650

Извините, я отредактировал пост и добавил ссылку на учебник/проект на github!
Я много раз спрашивал у автора, и он не мог мне помочь!

OriginalGriff

Если автор не может вам помочь тогда:
1) он не писал ее и так же мало знает, как она работает, как и вы.
2) это никогда не срабатывало, и он не знает, почему.

В любом случае, бросьте его в ведро f*ckit и двигайтесь дальше - найдите лучший пример того, что вы хотите, чтобы по крайней мере начинало работать "из коробки". Если вы пытаетесь работать с чем-то, что даже не будет компилироваться до того, как вы начнете его изменять, то вы серьезно тратите свое время, даже думая об использовании его.

Если бы вы пошли к дилеру, чтобы купить автомобиль, и он предложил вам тот, который был разбит на части "но все есть, вам не потребуется больше дня, чтобы собрать его", вы бы отдали свои наличные деньги или перешли бы к дилеру дальше по дороге?

Member 13376650

Дорогой OriginalGriff, я знаю, что это работает, и это победитель Leobner prise для чат-ботов. Но я не знаю, почему со мной нельзя работать!
Я спросил у автора здесь : https://github.com/bwilcox-1234/ChatScript/issues/173 но не смог решить проблему!

Но ты прав...это последний день, когда я попытаюсь сделать это.