2009-07-24 136 views
0

我正在尝试使用tm1api.dll编写连接到Cognos TM1数据存储的C#应用​​程序。我已经创造了VS C#Express 2008的基本壳牌项目,并添加以下代码无法在tm1api.dll中找到入口点

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 /出口tm1api.dll”,以确定其切入点:

101 5D 00008360 TM1APIFinalize 

我现在很茫然,似乎有一个入口点,但不承认它。任何人都可以将我指向正确的方向吗?

PS。我完全新的C#,所以我可能会作出非常基本的错误:)

+0

抱歉从dumpbin复制了不正确的行: 102 5E 00008350 TM1APIInitialize – 2009-07-24 06:23:03

回答

0

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

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

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

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

看样子你有入口点错“TM1APIInitialise”与“TM1APIFinalize”的名称。另外,如果使用字符串@,则不需要转义反斜杠。

相关问题