2011-11-07 53 views
0

testという1つの関数でQtにDLLを作成しました。私は別のQtプロジェクトを作成しましたが、問題なくDLLを使用することができました。私は今、このDLLをC#アプリケーションで使いたいと思っていますが、関数を呼び出す際に問題があります。私はC#exeと同じフォルダにDLLを置いた。私は私のDLLIMPORTにEntryPoint = testを追加しようとしたが、それでもQtで作成したDLLをC#アプリケーションにインポートするには

私が間違って何をやっている同じ例外を受け取る EntryPointNotFoundException

:私は、私は次の例外を受け取るので

[DllImport("TestDll.dll", CharSet = CharSet.Ansi, SetLastError = true)] 
private static extern bool test(); 

のような機能をインポートしますか?

+1

テストメソッドをDLLからエクスポートしてもよろしいですか? Dependency Walkerをダウンロードして、エクスポートにリストされているかどうかを確認します。 http://www.dependencywalker.com/ – shf301

+0

テキストがなく、SetLastError = trueが間違っているので、これはwin apisのためのものです。ほとんどの場合、DLLには名前が変更されている可能性があります。マングリングを避けるために.defファイルでエクスポートしてください。 extern "C"を必ず使用してください。また、一致する呼び出し規約を取得します。 C++コードはcdeclを使用しますが、C#のデフォルトはstdcallです。 –

+0

Qtの静的ビルドがインストールされていないという事実を持っているかもしれないという気持ちがあります。 – poco

答えて

0

CharSetでオプションを変更しようとしましたか?私は似たような状況にいました。しかし、その当時、私はFortranでコンパイルされた第三者DLLを使用していました。 AnsiからUnicodeを試してみてください。

HTH

+0

はい、私はUnicodeを試しましたが、同じ例外を生成しました。 – poco

+0

CharSetはないので無関係ですテキストパラメータはこちら –

関連する問題