- 締切済み
WinXPで作成したアプリをWin7で起動できない
・開発環境 WindowsXP VisuaStudio6.0 C++ ・起きている現象 上記開発環境にて、別の人が作成したDLL(××.dll)を組み込んだアプリを作成していますが、 Win7のPCにexe, dllをコピーして起動しようとしたところ、 「プロシージャ エントリポイント 〇〇(特定の関数名)が ダイナミックリンクライブラリ ××.dllから見つかりませんでした」 というエラーが出て起動できません。 原因として何が考えられるでしょうか?回避策等はありますか?
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- 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にするとか。
補足
コメントありがとうございます。 えらメッセージに出てきた関数はdll作成者の作った自作関数で、APIではありません。 説明不足で申し訳ありません。 exeのプロパティ→互換モード変換は知りませんでした! 今回は動作に効果はありませんでしたが勉強になりました。