Уважаемые коллеги! К сожалению не имею опыта в разработке под C/C++ и тем более библиотек. Цели изучить данный язык сейчас не стоит, в связи с чем прошу подсобить знающих в вопросе. Занимаюсь разработкой в PostgreSQL, в котором появилась необходимость установить расширение - индекс для полнотекстового поиска Rum. Установка производится из под Postgres ОШИБКА: не удалось открыть управляющий файл расширения "C:/Program Files/PostgreSQL/11/share/extension/rum.control": No such file or directoryСкачал расширение от сюда https://github.com/postgrespro/rum. Положил файл rum.control и файлы rum-x.x.sql в каталог. ОШИБКА: нет доступа к файлу "$libdir/rum": No such file or directoryНужна библиотека dll для Windows x64. В readme и на форумах сборка под Linux. Поиск по сайтам для скачивания dll такой файл не выдал. Нашел инструкцию по сборке библиотеки под Visual Studio Compiling PostgreSQL extensions with Visual Studio on Windows. Скачал, установил Visual Studio 2019 Community. Сделал все по инструкции. Компиляцию произвести удалось, библиотека создана. Копирую по пути "...\11\lib\". ОШИБКА: не удалось найти функцию "rumhandler" в файле "C:/Program Files/PostgreSQL/11/lib/rum.dll"Здесь я попробовал разобраться сходу, но не удалось. Сдался. Прошу помощи. В заголовочном файле rum.h такая функция объявлена. Код | extern Datum rumhandler(PG_FUNCTION_ARGS);
|
Судя по всему тело функции лежит в файле rumutil.c Код | Datum rumhandler(PG_FUNCTION_ARGS) {...}
|
Вывод dumpbin по моей скомпилированной библиотеке. Код | Microsoft (R) COFF/PE Dumper Version 14.21.27702.2 Copyright (C) Microsoft Corporation. All rights reserved.
Dump of file ..\rum\x64\Release\rum.dll
File Type: DLL
Section contains the following exports for rum.dll
00000000 characteristics FFFFFFFF time date stamp 0.00 version 1 ordinal base 156 number of functions 156 number of names
ordinal hint RVA name
1 0 000017F0 Pg_magic_func = Pg_magic_func 2 1 00006040 RumArraySimilarityFunction = RumArraySimilarityFunction 3 2 00006038 RumArraySimilarityThreshold = RumArraySimilarityThreshold 4 3 00006650 RumFuzzySearchLimit = RumFuzzySearchLimit 5 4 00001810 pg_finfo_rum_anyarray_config = pg_finfo_rum_anyarray_config 6 5 00001840 pg_finfo_rum_anyarray_consistent = pg_finfo_rum_anyarray_consistent 7 6 00001870 pg_finfo_rum_anyarray_distance = pg_finfo_rum_anyarray_distance 8 7 00001850 pg_finfo_rum_anyarray_ordering = pg_finfo_rum_anyarray_ordering 9 8 00001860 pg_finfo_rum_anyarray_similar = pg_finfo_rum_anyarray_similar 10 9 00001720 pg_finfo_rum_bit_compare_prefix = pg_finfo_rum_bit_compare_prefix 11 A 00001710 pg_finfo_rum_bit_extract_query = pg_finfo_rum_bit_extract_query 12 B 00001700 pg_finfo_rum_bit_extract_value = pg_finfo_rum_bit_extract_value 13 C 00001000 pg_finfo_rum_btree_consistent = pg_finfo_rum_btree_consistent 14 D 000016F0 pg_finfo_rum_bytea_compare_prefix = pg_finfo_rum_bytea_compare_prefix 15 E 000016E0 pg_finfo_rum_bytea_extract_query = pg_finfo_rum_bytea_extract_query 16 F 000016D0 pg_finfo_rum_bytea_extract_value = pg_finfo_rum_bytea_extract_value 17 10 000016C0 pg_finfo_rum_char_compare_prefix = pg_finfo_rum_char_compare_prefix 18 11 000016B0 pg_finfo_rum_char_extract_query = pg_finfo_rum_char_extract_query 19 12 000016A0 pg_finfo_rum_char_extract_value = pg_finfo_rum_char_extract_value 20 13 00001660 pg_finfo_rum_cidr_compare_prefix = pg_finfo_rum_cidr_compare_prefix 21 14 00001650 pg_finfo_rum_cidr_extract_query = pg_finfo_rum_cidr_extract_query 22 15 00001640 pg_finfo_rum_cidr_extract_value = pg_finfo_rum_cidr_extract_value 23 16 000015A0 pg_finfo_rum_date_compare_prefix = pg_finfo_rum_date_compare_prefix 24 17 00001590 pg_finfo_rum_date_extract_query = pg_finfo_rum_date_extract_query 25 18 00001580 pg_finfo_rum_date_extract_value = pg_finfo_rum_date_extract_value 26 19 00001820 pg_finfo_rum_extract_anyarray = pg_finfo_rum_extract_anyarray 27 1A 00001830 pg_finfo_rum_extract_anyarray_query = pg_finfo_rum_extract_anyarray_query 28 1B 000018A0 pg_finfo_rum_extract_tsquery = pg_finfo_rum_extract_tsquery 29 1C 000018B0 pg_finfo_rum_extract_tsquery_hash = pg_finfo_rum_extract_tsquery_hash 30 1D 00001880 pg_finfo_rum_extract_tsvector = pg_finfo_rum_extract_tsvector 31 1E 00001890 pg_finfo_rum_extract_tsvector_hash = pg_finfo_rum_extract_tsvector_hash 32 1F 000011E0 pg_finfo_rum_float4_compare_prefix = pg_finfo_rum_float4_compare_prefix 33 20 000011F0 pg_finfo_rum_float4_config = pg_finfo_rum_float4_config 34 21 00001200 pg_finfo_rum_float4_distance = pg_finfo_rum_float4_distance 35 22 000011D0 pg_finfo_rum_float4_extract_query = pg_finfo_rum_float4_extract_query 36 23 000011C0 pg_finfo_rum_float4_extract_value = pg_finfo_rum_float4_extract_value 37 24 00001240 pg_finfo_rum_float4_key_distance = pg_finfo_rum_float4_key_distance 38 25 00001210 pg_finfo_rum_float4_left_distance = pg_finfo_rum_float4_left_distance 39 26 00001230 pg_finfo_rum_float4_outer_distance = pg_finfo_rum_float4_outer_distance 40 27 00001220 pg_finfo_rum_float4_right_distance = pg_finfo_rum_float4_right_distance 41 28 00001270 pg_finfo_rum_float8_compare_prefix = pg_finfo_rum_float8_compare_prefix 42 29 00001280 pg_finfo_rum_float8_config = pg_finfo_rum_float8_config 43 2A 00001290 pg_finfo_rum_float8_distance = pg_finfo_rum_float8_distance 44 2B 00001260 pg_finfo_rum_float8_extract_query = pg_finfo_rum_float8_extract_query 45 2C 00001250 pg_finfo_rum_float8_extract_value = pg_finfo_rum_float8_extract_value 46 2D 000012D0 pg_finfo_rum_float8_key_distance = pg_finfo_rum_float8_key_distance 47 2E 000012A0 pg_finfo_rum_float8_left_distance = pg_finfo_rum_float8_left_distance 48 2F 000012C0 pg_finfo_rum_float8_outer_distance = pg_finfo_rum_float8_outer_distance 49 30 000012B0 pg_finfo_rum_float8_right_distance = pg_finfo_rum_float8_right_distance 50 31 00001630 pg_finfo_rum_inet_compare_prefix = pg_finfo_rum_inet_compare_prefix 51 32 00001620 pg_finfo_rum_inet_extract_query = pg_finfo_rum_inet_extract_query 52 33 00001610 pg_finfo_rum_inet_extract_value = pg_finfo_rum_inet_extract_value 53 34 00001030 pg_finfo_rum_int2_compare_prefix = pg_finfo_rum_int2_compare_prefix 54 35 00001040 pg_finfo_rum_int2_config = pg_finfo_rum_int2_config 55 36 00001050 pg_finfo_rum_int2_distance = pg_finfo_rum_int2_distance 56 37 00001020 pg_finfo_rum_int2_extract_query = pg_finfo_rum_int2_extract_query 57 38 00001010 pg_finfo_rum_int2_extract_value = pg_finfo_rum_int2_extract_value 58 39 00001090 pg_finfo_rum_int2_key_distance = pg_finfo_rum_int2_key_distance 59 3A 00001060 pg_finfo_rum_int2_left_distance = pg_finfo_rum_int2_left_distance 60 3B 00001080 pg_finfo_rum_int2_outer_distance = pg_finfo_rum_int2_outer_distance 61 3C 00001070 pg_finfo_rum_int2_right_distance = pg_finfo_rum_int2_right_distance 62 3D 000010C0 pg_finfo_rum_int4_compare_prefix = pg_finfo_rum_int4_compare_prefix 63 3E 000010D0 pg_finfo_rum_int4_config = pg_finfo_rum_int4_config 64 3F 000010E0 pg_finfo_rum_int4_distance = pg_finfo_rum_int4_distance 65 40 000010B0 pg_finfo_rum_int4_extract_query = pg_finfo_rum_int4_extract_query 66 41 000010A0 pg_finfo_rum_int4_extract_value = pg_finfo_rum_int4_extract_value 67 42 00001120 pg_finfo_rum_int4_key_distance = pg_finfo_rum_int4_key_distance 68 43 000010F0 pg_finfo_rum_int4_left_distance = pg_finfo_rum_int4_left_distance 69 44 00001110 pg_finfo_rum_int4_outer_distance = pg_finfo_rum_int4_outer_distance 70 45 00001100 pg_finfo_rum_int4_right_distance = pg_finfo_rum_int4_right_distance 71 46 00001150 pg_finfo_rum_int8_compare_prefix = pg_finfo_rum_int8_compare_prefix 72 47 00001160 pg_finfo_rum_int8_config = pg_finfo_rum_int8_config 73 48 00001170 pg_finfo_rum_int8_distance = pg_finfo_rum_int8_distance 74 49 00001140 pg_finfo_rum_int8_extract_query = pg_finfo_rum_int8_extract_query 75 4A 00001130 pg_finfo_rum_int8_extract_value = pg_finfo_rum_int8_extract_value 76 4B 000011B0 pg_finfo_rum_int8_key_distance = pg_finfo_rum_int8_key_distance 77 4C 00001180 pg_finfo_rum_int8_left_distance = pg_finfo_rum_int8_left_distance 78 4D 000011A0 pg_finfo_rum_int8_outer_distance = pg_finfo_rum_int8_outer_distance 79 4E 00001190 pg_finfo_rum_int8_right_distance = pg_finfo_rum_int8_right_distance 80 4F 000015D0 pg_finfo_rum_interval_compare_prefix = pg_finfo_rum_interval_compare_prefix 81 50 000015C0 pg_finfo_rum_interval_extract_query = pg_finfo_rum_interval_extract_query 82 51 000015B0 pg_finfo_rum_interval_extract_value = pg_finfo_rum_interval_extract_value 83 52 00001600 pg_finfo_rum_macaddr_compare_prefix = pg_finfo_rum_macaddr_compare_prefix 84 53 000015F0 pg_finfo_rum_macaddr_extract_query = pg_finfo_rum_macaddr_extract_query 85 54 000015E0 pg_finfo_rum_macaddr_extract_value = pg_finfo_rum_macaddr_extract_value 86 55 00001300 pg_finfo_rum_money_compare_prefix = pg_finfo_rum_money_compare_prefix 87 56 00001310 pg_finfo_rum_money_config = pg_finfo_rum_money_config 88 57 00001320 pg_finfo_rum_money_distance = pg_finfo_rum_money_distance 89 58 000012F0 pg_finfo_rum_money_extract_query = pg_finfo_rum_money_extract_query 90 59 000012E0 pg_finfo_rum_money_extract_value = pg_finfo_rum_money_extract_value 91 5A 00001360 pg_finfo_rum_money_key_distance = pg_finfo_rum_money_key_distance 92 5B 00001330 pg_finfo_rum_money_left_distance = pg_finfo_rum_money_left_distance 93 5C 00001350 pg_finfo_rum_money_outer_distance = pg_finfo_rum_money_outer_distance 94 5D 00001340 pg_finfo_rum_money_right_distance = pg_finfo_rum_money_right_distance 95 5E 00001760 pg_finfo_rum_numeric_cmp = pg_finfo_rum_numeric_cmp 96 5F 00001790 pg_finfo_rum_numeric_compare_prefix = pg_finfo_rum_numeric_compare_prefix 97 60 00001780 pg_finfo_rum_numeric_extract_query = pg_finfo_rum_numeric_extract_query 98 61 00001770 pg_finfo_rum_numeric_extract_value = pg_finfo_rum_numeric_extract_value 99 62 00001390 pg_finfo_rum_oid_compare_prefix = pg_finfo_rum_oid_compare_prefix 100 63 000013A0 pg_finfo_rum_oid_config = pg_finfo_rum_oid_config 101 64 000013B0 pg_finfo_rum_oid_distance = pg_finfo_rum_oid_distance 102 65 00001380 pg_finfo_rum_oid_extract_query = pg_finfo_rum_oid_extract_query 103 66 00001370 pg_finfo_rum_oid_extract_value = pg_finfo_rum_oid_extract_value 104 67 000013F0 pg_finfo_rum_oid_key_distance = pg_finfo_rum_oid_key_distance 105 68 000013C0 pg_finfo_rum_oid_left_distance = pg_finfo_rum_oid_left_distance 106 69 000013E0 pg_finfo_rum_oid_outer_distance = pg_finfo_rum_oid_outer_distance 107 6A 000013D0 pg_finfo_rum_oid_right_distance = pg_finfo_rum_oid_right_distance 108 6B 00001690 pg_finfo_rum_text_compare_prefix = pg_finfo_rum_text_compare_prefix 109 6C 00001680 pg_finfo_rum_text_extract_query = pg_finfo_rum_text_extract_query 110 6D 00001670 pg_finfo_rum_text_extract_value = pg_finfo_rum_text_extract_value 111 6E 00001540 pg_finfo_rum_time_compare_prefix = pg_finfo_rum_time_compare_prefix 112 6F 00001530 pg_finfo_rum_time_extract_query = pg_finfo_rum_time_extract_query 113 70 00001520 pg_finfo_rum_time_extract_value = pg_finfo_rum_time_extract_value 114 71 00001420 pg_finfo_rum_timestamp_compare_prefix = pg_finfo_rum_timestamp_compare_prefix 115 72 00001430 pg_finfo_rum_timestamp_config = pg_finfo_rum_timestamp_config 116 73 000017A0 pg_finfo_rum_timestamp_consistent = pg_finfo_rum_timestamp_consistent 117 74 00001440 pg_finfo_rum_timestamp_distance = pg_finfo_rum_timestamp_distance 118 75 00001410 pg_finfo_rum_timestamp_extract_query = pg_finfo_rum_timestamp_extract_query 119 76 00001400 pg_finfo_rum_timestamp_extract_value = pg_finfo_rum_timestamp_extract_value 120 77 00001480 pg_finfo_rum_timestamp_key_distance = pg_finfo_rum_timestamp_key_distance 121 78 00001450 pg_finfo_rum_timestamp_left_distance = pg_finfo_rum_timestamp_left_distance 122 79 00001470 pg_finfo_rum_timestamp_outer_distance = pg_finfo_rum_timestamp_outer_distance 123 7A 00001460 pg_finfo_rum_timestamp_right_distance = pg_finfo_rum_timestamp_right_distance 124 7B 000014B0 pg_finfo_rum_timestamptz_compare_prefix = pg_finfo_rum_timestamptz_compare_prefix 125 7C 000014C0 pg_finfo_rum_timestamptz_config = pg_finfo_rum_timestamptz_config 126 7D 000014D0 pg_finfo_rum_timestamptz_distance = pg_finfo_rum_timestamptz_distance 127 7E 000014A0 pg_finfo_rum_timestamptz_extract_query = pg_finfo_rum_timestamptz_extract_query 128 7F 00001490 pg_finfo_rum_timestamptz_extract_value = pg_finfo_rum_timestamptz_extract_value 129 80 00001510 pg_finfo_rum_timestamptz_key_distance = pg_finfo_rum_timestamptz_key_distance 130 81 000014E0 pg_finfo_rum_timestamptz_left_distance = pg_finfo_rum_timestamptz_left_distance 131 82 00001500 pg_finfo_rum_timestamptz_outer_distance = pg_finfo_rum_timestamptz_outer_distance 132 83 000014F0 pg_finfo_rum_timestamptz_right_distance = pg_finfo_rum_timestamptz_right_distance 133 84 00001570 pg_finfo_rum_timetz_compare_prefix = pg_finfo_rum_timetz_compare_prefix 134 85 00001560 pg_finfo_rum_timetz_extract_query = pg_finfo_rum_timetz_extract_query 135 86 00001550 pg_finfo_rum_timetz_extract_value = pg_finfo_rum_timetz_extract_value 136 87 00001930 pg_finfo_rum_ts_distance_td = pg_finfo_rum_ts_distance_td 137 88 00001910 pg_finfo_rum_ts_distance_tt = pg_finfo_rum_ts_distance_tt 138 89 00001920 pg_finfo_rum_ts_distance_ttf = pg_finfo_rum_ts_distance_ttf 139 8A 00001970 pg_finfo_rum_ts_join_pos = pg_finfo_rum_ts_join_pos 140 8B 00001960 pg_finfo_rum_ts_score_td = pg_finfo_rum_ts_score_td 141 8C 00001940 pg_finfo_rum_ts_score_tt = pg_finfo_rum_ts_score_tt 142 8D 00001950 pg_finfo_rum_ts_score_ttf = pg_finfo_rum_ts_score_ttf 143 8E 000018E0 pg_finfo_rum_tsquery_consistent = pg_finfo_rum_tsquery_consistent 144 8F 00001900 pg_finfo_rum_tsquery_distance = pg_finfo_rum_tsquery_distance 145 90 000018D0 pg_finfo_rum_tsquery_pre_consistent = pg_finfo_rum_tsquery_pre_consistent 146 91 000018F0 pg_finfo_rum_tsquery_timestamp_consistent = pg_finfo_rum_tsquery_timestamp_consistent 147 92 000018C0 pg_finfo_rum_tsvector_config = pg_finfo_rum_tsvector_config 148 93 00001750 pg_finfo_rum_varbit_compare_prefix = pg_finfo_rum_varbit_compare_prefix 149 94 00001740 pg_finfo_rum_varbit_extract_query = pg_finfo_rum_varbit_extract_query 150 95 00001730 pg_finfo_rum_varbit_extract_value = pg_finfo_rum_varbit_extract_value 151 96 00001800 pg_finfo_rumhandler = pg_finfo_rumhandler 152 97 000017B0 pg_finfo_ruminv_extract_tsquery = pg_finfo_ruminv_extract_tsquery 153 98 000017C0 pg_finfo_ruminv_extract_tsvector = pg_finfo_ruminv_extract_tsvector 154 99 000017E0 pg_finfo_ruminv_tsquery_config = pg_finfo_ruminv_tsquery_config 155 9A 000017D0 pg_finfo_ruminv_tsvector_consistent = pg_finfo_ruminv_tsvector_consistent 156 9B 00001980 pg_finfo_tsquery_to_distance_query = pg_finfo_tsquery_to_distance_query
Summary
B000 .data 1000 .pdata 3000 .rdata 1000 .reloc 2000 .text
|
Действительно, функции rumhandler нет, есть схожая по названию pg_finfo_rumhandler. Подскажите, пожалуйста, что делать что бы скомпилировать dll с внешней функцией rumhandler или что-то я не правильно понял в принципе.
|