Вопрос

Я пытаюсь написать приложение 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\ M1\\bin\ m1api.dll».»

Я использовал «dumpbin/exports tm1api.dll», чтобы определить точку входа:

    101   5D 00008360 TM1APIFinalize

Теперь я в растерянности, вроде бы есть точка входа, но она ее распознает.Может кто-то указать мне верное направление?

ПС.Я совершенно новичок в 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();
    }
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top