Невозможно найти точку входа в tm1api.dll
Я пытаюсь написать приложение на C#, подключающееся к хранилищу данных Cognos TM1 с помощью tm1api.dll. Я создал базовый проект оболочки в VS C# Express 2008 и добавил следующий код
public partial class MainPortal : Window
{
[System.Runtime.InteropServices.DllImport(@"C:\\Program Files\\Cognos\\TM1\\bin\\tm1api.dll", EntryPoint="TM1APIInitialise")]
public static extern void TM1APIInitialise();
public MainPortal()
{
InitializeComponent();
TM1APIInitialise();
}
}
Я могу построить этот проект без ошибок, но при запуске я получаю следующую ошибку:
"Не удалось найти точку входа с именем 'TM1APIInitialise' в DLL 'C:\\Program Files\\Cognos\\TM1\\bin\\tm1api.dll'."
Я использовал 'dumpbin /exports tm1api.dll', чтобы определить его точку входа:
101 5D 00008360 TM1APIFinalize
Теперь я в растерянности, кажется, что у него есть точка входа, но она все же распознает. Может кто-то указать мне верное направление?
PS. Я совершенно новичок в C#, поэтому я могу делать очень простые ошибки:)
3 ответа
Спасибо JP и ArsenMkrt, ваши ответы позволят мне решить проблему.
Я определил его как TM1APIInitialise, и он должен был быть TM1APIInitialize.
Обратите внимание на 's' вместо 'z' (чертовски американское правописание):).
Похоже, у вас неверное имя точки входа "TM1APIInitialise" по сравнению с "TM1APIFinalize". Кроме того, вам не нужно избегать обратной косой черты \, если вы используете строковый литерал @.
Попробуй это
public partial class MainPortal : Window
{
[System.Runtime.InteropServices.DllImport(@"C:\Program Files\Cognos\TM1\bin\tm1api.dll", EntryPoint="TM1APIFinalize")]
public static extern void TM1APIFinalize();
public MainPortal()
{
InitializeComponent();
TM1APIInitialise();
}
}