Шаг за шагом
Выделите входные данные
Данные ... Из таблицы / диапазона ... не проверять [] В моей таблице есть заголовки
Добавить столбец. .. Пользовательский столбец ... используя имя столбца Пользовательский, с формулой
Text.Length([Column1])
Добавить столбец ... Пользовательский столбец ... используя имя столбца Пользовательский 1, с формулой
if [Custom]=6 then [Column1] else null
[118 ] Нажмите на столбец Custom.1, щелкните правой кнопкой мыши и заполните ... вниз ...
Используйте стрелку рядом с пользовательским столбцом и снимите флажок [] 6, оставив только [x] 11
Щелкните столбец Пользовательский, щелкните правой кнопкой мыши и выберите удалить столбцы
файл ... закрыть и загрузить [ 1111]
Код производства:
let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Added Custom" = Table.AddColumn(Source, "Custom", each Text.Length([Column1])),
#"Added Custom1" = Table.AddColumn(#"Added Custom", "Custom.1", each if [Custom]=6 then [Column1] else null),
#"Filled Down" = Table.FillDown(#"Added Custom1",{"Custom.1"}),
#"Filtered Rows" = Table.SelectRows(#"Filled Down", each ([Custom] =11)),
#"Removed Columns" = Table.RemoveColumns(#"Filtered Rows",{"Custom"})
in #"Removed Columns"
Вы используете .def файл в своем dll проекте экспортировать те функции? Если так, удалите его и попробуйте еще раз. Это - просто предположение, потому что похоже, что Ваш экспорт не то, чем они должны быть, когда Вы делаете экстерна "C" declspec (dllexports).
Я испытал это с простым C++ dll использование
extern "C" __declspec(dllexport) BOOL Install();
extern "C" __declspec(dllexport) BOOL PPPConnect();
и простое приложение C# с помощью объявлений PInvoke и это хорошо работало.
Когда я сделал dumpbin/exports на dll, я видел:
Дамп файла PPPManager.dll
Тип файла: DLL
Раздел содержит следующий экспорт для PPPManager.dll
00000000 characteristics
499F6C2D time date stamp Fri Feb 20 20:51:25 2009
0.00 version
1 ordinal base
2 number of functions
2 number of names
ordinal hint RVA name
1 0 000110CD Install = @ILT+200(_Install)
2 1 00011069 PPPConnect = @ILT+100(_PPPConnect)
Заметьте, что экспортируемые имена отличаются в моем случае.
Это могло быть что-то столь же простое как PPPConnect
сбой способом, который неправильно истолкован ОС. Попытайтесь реализовать обоих Install
и PPPConnect
как без операций в секунду (просто сделали, чтобы они возвратились TRUE
не делая ничего больше), и видят, сохраняется ли ошибка. Если так, попытайтесь подкачать порядок, в котором они экспортируются (все еще как без операций в секунду) и видят, связывается ли проблема с упорядочиванием (вряд ли) или с чем-то еще.
Можно также использовать графический инструмент depends
подтвердить, что экспортирует таблицу DLL, похоже, но я сомневаюсь, что проблема возникает из тех четвертей.
используйте зависимость Уокер и откройте Ваш DLL для проверки, какие методы доступны
Согласно Вашей Установке описания и PPPConnect отличается только по именам. Я предполагаю, что Вы просто используете старую .dll версию со своим приложением C#. Тот без PPPConnect определяется.
Объявления выглядят правильными (насколько я могу судить без источников).
Большая информация, но как Вы упоминаете, все в порядке здесь. Попытайтесь установить Средства отладки для Windows и выполнения:
kd -z \path\to\PPPManager.dll -y \path\to\PPPManager.pdb -c "x pppmodule!*"
получить лучший дамп таблицы символов; это - слепой выстрел также, но Вы могли также попробовать:
extern "C"
{
__declspec(dllexport) BOOL Install();
__declspec(dllexport) BOOL PPPConnect();
};
в случае, если __ declspec делает что-то странное.