• 締切済み

WinXPで作成したアプリをWin7で起動できない

・開発環境  WindowsXP  VisuaStudio6.0 C++ ・起きている現象  上記開発環境にて、別の人が作成したDLL(××.dll)を組み込んだアプリを作成していますが、  Win7のPCにexe, dllをコピーして起動しようとしたところ、  「プロシージャ エントリポイント 〇〇(特定の関数名)が  ダイナミックリンクライブラリ ××.dllから見つかりませんでした」  というエラーが出て起動できません。  原因として何が考えられるでしょうか?回避策等はありますか?  

みんなの回答

  • kumatti1
  • ベストアンサー率60% (73/121)
回答No.3

シンボリックリンクやジャンクションなど、仮想的なパスでないディレクトリに移動して、 実行するとか、lib.exeでインポートライブラリを作り直すとか。 http://yohshiy.blog.fc2.com/blog-entry-66.html

  • kumatti1
  • ベストアンサー率60% (73/121)
回答No.2

> えらメッセージに出てきた関数はdll作成者の作った自作関数で、APIではありません。 DUMPBIN でエクスポートされてる関数を調べては。 http://msdn.microsoft.com/ja-jp/library/vstudio/30e78zd0.aspx # 存在しない関数だから呼べないだけではと。

  • kumatti1
  • ベストアンサー率60% (73/121)
回答No.1

この関数ってAPIなんですかね? Vista以降で廃止されたAPIなのか、それとも単純にDLLのバージョンが違うのか。 前者ならAPIフックで(SetDll)、 http://research.microsoft.com/en-us/projects/detours/ 後者ならマニフェストファイルで(mt.exe)。 ほかには、exeファイルを右クリックして、プロパティから互換性タブで互換モードをXPにするとか。

Sept2100
質問者

補足

コメントありがとうございます。 えらメッセージに出てきた関数はdll作成者の作った自作関数で、APIではありません。 説明不足で申し訳ありません。 exeのプロパティ→互換モード変換は知りませんでした! 今回は動作に効果はありませんでしたが勉強になりました。

関連するQ&A