无法在tm1api.dll中找到入口点

时间:2009-07-24 06:09:24

标签: c# cognos-tm1

我正在尝试使用tm1api.dll编写连接到Cognos TM1数据存储区的C#应用​​程序。我在VS C#Express 2008中创建了一个基本的shell项目,并添加了以下代码

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();
    }
}

我可以在没有错误的情况下构建此项目,但在运行时我收到以下错误:

“无法在DLL'C:\\ Program Files \\ Cognos \\ TM1 \\ bin \\ tm1api.dll'中找到名为'TM1APIInitialise'的入口点。”

我使用'dumpbin / exports tm1api.dll'来确定其入口点:

    101   5D 00008360 TM1APIFinalize

现在我不知所措,似乎有一个切入点,但确实认出来了。有人能指出我正确的方向吗?

PS。我对C#完全不熟悉,所以我可能会犯下非常基本的错误:)

3 个答案:

答案 0 :(得分:1)

试试这个

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();
    }
}

答案 1 :(得分:1)

看起来您输入的名称错误为“TM1APIInitialise”与“TM1APIFinalize”。此外,如果使用字符串文字@。

,则无需转义反斜杠\

答案 2 :(得分:0)

感谢JP和ArsenMkrt,你的回答都导致我解决了这个问题。

我将它定义为TM1APIInitialise,它应该是TM1APIInitialize。

注意's'而不是'z'(该死的美国拼写):)。