无法在tm1api.dll中找到入口点
问题描述:
我正在尝试使用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#,所以我可能会作出非常基本的错误:)
答
感谢JP和ArsenMkrt,你的回答都让我解决了这个问题。
我将它定义为TM1APIInitialise,它应该是TM1APIInitialize。
注意's'而不是'z'(该死的美国拼写):)。
答
试试这个
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();
}
}
答
看样子你有入口点错“TM1APIInitialise”与“TM1APIFinalize”的名称。另外,如果使用字符串@,则不需要转义反斜杠。
抱歉从dumpbin复制了不正确的行: 102 5E 00008350 TM1APIInitialize – 2009-07-24 06:23:03