Это довольно прямое оформление идентификатора на работе. Префикс imp_
автоматически генерируется компилятором, он экспортирует указатель на функцию, который позволяет оптимизировать привязку к экспорту DLL. По языковым правилам imp_ имеет префикс ведущего подчеркивания, требуемого, поскольку он живет в глобальном пространстве имен и генерируется реализацией и в противном случае не отображается в исходном коде. Таким образом, вы получаете _imp_
.
. Следующее, что происходит, заключается в том, что компилятор украшает идентификаторы , чтобы позволить компоновщику распознавать неверные совпадения. Весьма важно, потому что компилятор не может диагностировать несоответствия декларации между модулями и самостоятельно диагностировать их во время выполнения very .
Во-первых, существует C ++-оформление - очень сложная схема, которая поддерживает перегрузки функций. Он генерирует довольно странные имена, обычно в том числе много? и @ символов с дополнительными символами для аргументов и возвращаемых типов, так что перегрузки недвусмысленны. Затем есть декорация для идентификаторов C, они основаны на вызывающем соглашении. Функция cdecl имеет одно ведущее подчеркивание, функция stdcall имеет лидирующий знак подчеркивания и конечный @n, который позволяет диагностировать несогласованные объявления аргументов, прежде чем они будут дисбаланс стека.
Таким образом, вы получили ошибку компоновщика, потому что вы забыли указать ссылку на C, линкеру было предложено в значительной степени сопоставить его с 64-битным кодом. оформленное имя C ++ с мягко оформленным названием C. Затем вы установили его с помощью extern "C"
, теперь вы получили единственное добавленное подчеркивание для cdecl, превратив _imp_
в __imp_
.
Используйте Json.Document()
функция для преобразования строки в данные Json.
let
Source = Json.Document(Json.Document(Web.Contents("http://localhost:18091/pools/default/buckets/Aggregation/docs/AvgSumAssuredByProduct"))[json]),
#"Converted to Table" = Record.ToTable(Source),
#"Filtered Rows" = Table.SelectRows(#"Converted to Table", each not Text.Contains([Name], "type_")),
#"Renamed Columns" = Table.RenameColumns(#"Filtered Rows",{{"Name", "AvgSumAssuredByProduct"}}),
#"Changed Type" = Table.TransformColumnTypes(#"Renamed Columns",{{"Value", type number}})
in
#"Changed Type"