DllImportが正しく動作しない

このQ&Aのポイント
  • un4seenのBASS audio libraryを用いてC#で動画再生のアプリを作成しようとしています。
  • Bass.Netをダウンロードしてみますと、サンプルプログラムが入っています。
  • xVideo_InitメソッドでBASS_DSHOW.dllを読み込む処理でエラーが発生しています。
回答を見る
  • ベストアンサー

DllImportが正しく動作しない

un4seenのBASS audio libraryを用いてC#で動画再生のアプリを作成しようとしています。 BASS_DSHOWというライブラリを用いたいと思いまして、下記のサイトからダウンロードしました。 http://www.un4seen.com/ 言語はC#を考えていることから、Bass.Netをダウンロードしてみますと、サンプルプログラムが入っています。 見てみますとNETフォルダにxVideo.NET、Demoという2つのソリュージョンが入っています。 一度Visual Studio Express 2010で開いたのですが、コンバートが動きましたので、Visual Studio Express 2008で再度開いてみました。 xVideo.NETの方は問題なく開いてビルドも出来たのですが、Demoの方が参照設定で1つ(xVideo.NET)、ファイルで1つ(xVideo.NET.dll)警告が出ています。 またビルドも通らない状況でした。 このファイルは見つかりませんでしたので、試行錯誤した結果、xVideo.NETでビルドされたdll(BASS_DSHOW.NET.dll)を代わりに設定する事で対応してビルドまでは通るようになりました。 ところが、実行してみると、「DLL 'BASS_DSHOW.dll' を読み込めません: 指定されたモジュールが見つかりません。 (HRESULT からの例外: 0x8007007E)」というエラーが出て起動しません。 調べてみるとエラーになった所が Functions.xVideo_Init(Handle, 0); と書かれており、そのxVideo_Initを探すと、 const string dllname = "BASS_DSHOW.dll"; [DllImport(dllname, CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)] public extern static int xVideo_Init(IntPtr handle,uint flags); という記述となっていました。 BASS_DSHOW.dllはダウンロードしたファイルの中にありましたので、ビルドされたexeと同じフォルダ内にこのBASS_DSHOW.dllを置いたり、windows\system32内に置いたりとやってみたのですが、やっぱり上記のエラーが発生してしまいます。 今回は特に別のDLLを参照して呼び出す必要はありませんので、上記の処理をコピーして呼び出し元に持ってきてチェックしてみたのですが、やはり結果は同じとなりました。 どのようにして解決すればよいのか教えて頂けるとありがたいです。 環境はWindows7 32bit 開発ツールはVisual Studio Express 2008となっております。 よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • ctmogawa
  • ベストアンサー率54% (6/11)
回答No.2

質問の内容を理解しきれず、変な回答で失礼しました。 試しにもういちどやってみたところ「BASS_DSHOW.dll」は内部で「BASS.DLL」を呼び出しているようですので「BASS.DLL」の入手を考えてみた方が良いかもしれません。

lato03
質問者

お礼

お返事が遅くなって申し訳ありません。 # 入力していたはずなのに消えていました。何故?(汗) BASS.DLLをダウンロードして同じフォルダに配置することで無事動作させることが出来ました。 ちょっと警告が出ますがそれはどうにかなりそうです。 本当にありがとうございました。

その他の回答 (1)

  • ctmogawa
  • ベストアンサー率54% (6/11)
回答No.1

このライブラリを使ったことはありませんが、試しにビルドしてみました。 xVideo.NETはそのままビルドが成功。DEMOが駄目なのは同じでした。 とりあえずビルド成功までの手順 1.DEMOのプロジェクトの参照設定から「xVideo.NET」を削除   ついでにプロジェクトツリーにある「xVideo.NET.dll」も削除 2.「参照設定」から右クリックで「参照の追加」 3.「参照」タブではじめからある「BASS_DSHOW.NET.dll」を選択 4.ビルド これでビルドは通りました。 環境はWindows7-64bitでVS2008です。

lato03
質問者

お礼

大変お手数をおかけしました。 言葉足らずで申し訳ないですが、実はその対応につきましては、 > 試行錯誤した結果、xVideo.NETでビルドされたdll(BASS_DSHOW.NET.dll)を > 代わりに設定する事で対応してビルドまでは通るようになりました。 の部分で対応した内容と全く同じだったりします。 そしてそれを実際に実行すると動かないという状態で困っていたりします。 お手数をおかけしましたのに申し訳ありません。

関連するQ&A

  • Visual Studio 2005 Express EditionでCOMアドインを作成できますか?

    Excel VBAでアドインソフトを数本作ったことがあります。 そしてCOMアドインに興味を持ったのはいいが、どうすればいいのか分からずとりあえずVisual Studio 2005 Express Editionをダウンロードしてインストールしたのですが、サンプルでプログラムを作って試しにビルドするとEXEファイルしかできません。 ひょっとしてVisual Studio 2005 Express EditionでCOMアドインは作成不可能なのでしょうか? もし可能性があるならばExcel VBAでDLLを呼び出すサンプルを示していただけるとうれしいです。 どうぞよろしくお願いします。

  • VistaでビルドしたexeがXPで動作しない。

    Visual Studio 2003 (OS:XP)で開発していたプロジェクトを、Visual Studio 2005(OS:Vista)に移行しているのですが、VistaでビルドしたexeをXPへインストールすると下記のエラーが表示され動作しません。 【表示されるエラー】 「プロシージャ エントリ ポイント _except_handler4_common が ダイナミック リンク ライブラリ msvcrt.dllから見つかりませんでした」 MFCのダイアログベースで、インストールはセットアッププロジェクトで作成したインストーラーを使用しています。 VistaでビルドしたexeをXPで動作させるには、どのようにしたら良いのでしょうか? 以上、よろしくお願いします。

  • Visual C++ 2010 Expressについて。

    Visual C++ 2010 Expressについて。 Visual C++ 2010 Expressを使っているのですが、 プロジェクトを開いて1回目ビルドすると必ずエラーが出ます。 ビルドした後1回閉じて開き直してビルドすると正常にビルドできます。 エラー内容 C:\(省略)\ファイル名.vcxproj : error MSB4014: 内部エラーのため、ビルドは予期せず停止しました。 C:\(省略)\ファイル名.vcxproj : error MSB4014: Microsoft.Build.Exceptions.BuildAbortedException: ビルドが取り消されました。MSBuild.exe は、場所 "C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe" に見つからなかったため、子ノードとして起動できませんでした。必要に応じて、BuildParameters または MSBUILD_EXE_PATH 環境変数で正しい場所を指定してください。 と出ます。 原因を色々調べてみたのですが分かりませんでした。 かもしれないということでもいいので答えて頂けると助かります。 環境 XP SP3 Visual Studio 2005が入っています。 ちなみに、2005は正常に出来ます。

  • visual studio .NET→ Visual C++ 2005 Express Edition(pshpack2.h)

    visual studio .NETで問題なくコンパイルできたプログラムを 他のマシンのVisual C++ 2005 Express Editionで コンパイルするとビルドエラー fatal error C1083: include ファイルを開けません。'pshpack2.h': No such file or directory のメッセージです。 解決法を教えてください。

  • Visual Studioでビルドできません.

    Visual Studio 2008の環境でVisual Fortranを使用しております. インストールし,新しいプロジェクトでVisual Studioにインストールされているメイン・プログラム・コードもビルドおよびデバッグができず,以下のようなエラーが表示されます. 「エラー1  fatal error LNK2023: DLL または エントリ ポイント 'msobj80.dll' が正しくありません。 LINK 」 このような,エラーが表示されたときはどのように対処すればいいのでしょうか? パソコンの環境は ・DELL PRECISION T3500 ・Windows 7 Professional SP1 ・64ビット です. このような開発ソフトを扱うのは初めてなので,なにも分からない状態です. 皆様のご教授お待ちしております.

  • Directshowを使いたいのですが…

    Directshowを使う為に、 Microsoft DirectX SDK (March2008)とDirectshowが入っている Extrasを共にHドライブに入れてVisual studio2005 visualC++でビルドしたのですが<dshow.h>インクルードが開けませんでした。 <dshow.h>は、Directshowのヘッダファイルを指しているものです。 必要なものは入れたはずなのですが…。 別なものでも入れる必要があるのでしょうか? それとも入れる場所は決まっているのでしょうか? 本によると、フォルダで指定先は決まっていなかったので後者は考えにくいです。 お願い致します。

  • Microsoft Visual C++2010 

    Microsoft Visual C++2010 Expressをダウンロードしようと思ったのですが、Visual Studioのサイトが2012と、新しくなっていたのでダウンロードできませんでした。(正確にはMicrosoft Visual C++2010 ExpressがVisual Studioのサイトにありませんでした。)もちろん、「Microsoft Visual C++2010 Express」で検索してみましたが、ダウンロードできるサイトがありませんでした。 まだMicrosoft Visual C++2010 Expressはダウンロードできるのでしょうか?あるとすれば教えてください。(できればURLを添付してください。)お願いします。

  • dllの作成方法について

    現在 http://www.kumei.ne.jp/c_lang/sdk2/sdk_119.htm のサイトを参考に、 dllの作り方について勉強しています。 dll01.cpp, dll01.hまでを書いて、コンパイルしようとしたのですが、 c:\users\kei\documents\visual studio 2005\projects\dll01\dll01.h(5) : error C2059: 構文エラー : '文字列' c:\users\kei\documents\visual studio 2005\projects\dll01\dll01.cpp(11) : error C2059: 構文エラー : '文字列' とでてきてコンパイルできません。 解決方法が全く分からず困っています。 どなたかご教授願います。 <環境>   Windows Vista Home Premium Visual C++ 2005 Express Edition

  • Visual Studio C++初心者です.

    Visual studio C++ Express Editionを インストールして試しにただフォームに ラベルを付けるだけのプログラムを作って ビルドしてみましたところ プロジェクト : error PRJ0003 : 'cmd.exe' の起動中にエラーが発生しました。 というエラーが出てしまいました. 初心者なのでなにがエラーとなっているのか わからないので教えてください.

  • visual studio 20008について

    私は、学校でvisual studio 2003を用いたプログラミングを行っております。家でもプログラミングを続行したく、今回、自宅のPCにvisual studio 2008を導入しようか検討しております。 そこで質問なのですが、visual studio 2003で作成したプロジェクトをvisual studio 2008でさらに編集を加え、再度visual studio 2003で続きを行う(その逆も)ことはできないのでしょうか。 調べてみるとvisual studio 2008ではFramework1.1が対応していないようなので、なんらかの方法を使ってvisual studio 2008でもFramework1.1での開発を可能にすることができるのか疑問に思い、お伺いしたいのです。 もしくは、visual studio 2008でビルドをかけた際、Framework1.1で対応していないものがあればビルドエラーを出す方法等あれば教えていただきたいのです。 お手数ですが質問にお答えいただけると幸いです。 よろしくお願いいたします。