0

tm1api.dllを使用してCognosTM1データストアに接続するC#アプリケーションを作成しようとしています。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();
    }
}

このプロジェクトはエラーなしでビルドできますが、実行すると次のエラーが発生します。

DLL'C:\\ Program Files \\ Cognos \\ TM1 \\ bin\\tm1api.dll'で'TM1APIInitialise'という名前のエントリポイントが見つかりません。

'dumpbin / exports tm1api.dll'を使用して、エントリポイントを決定しました。

    101   5D 00008360 TM1APIFinalize

今、私は途方に暮れています。エントリポイントがあるようですが、認識しています。誰かが私を正しい方向に向けることができますか?

PS。私はC#にまったく慣れていないので、非常に基本的な間違いを犯している可能性があります:)

4

3 に答える 3

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();
    }
}
于 2009-07-24T06:14:41.837 に答える
1

エントリポイントの名前が「TM1APIInitialise」と「TM1APIFinalize」で間違っているようです。また、文字列リテラル@を使用する場合は、円記号\をエスケープする必要はありません。

于 2009-07-24T06:15:39.557 に答える
0

JPとArsenMkrtに感謝します。あなたの答えは両方とも、私が問題を解決することにつながります。

私はそれをTM1APIInitialiseとして定義しましたが、TM1APIInitializeである必要がありました。

'z'の代わりに's'に注意してください(アメリカのスペルを酷評します):)。

于 2009-07-24T06:28:56.490 に答える