デバックモードで実行できない – プログラミング – Home

デバックモードで実行できない
 
通知
すべてクリア

[解決済] デバックモードで実行できない


ハロ
 ハロ
(@ハロ)
ゲスト
結合: 23年前
投稿: 4
Topic starter  

こんにちは。ハロと申します。

早速ですが、質問です。
私はDLLを明示的リンクでロードして、
その関数を使用するモジュールを作成しています。
リリースモードでは実行できるのですが、
デバッグモードだと関数をロードすることができません。

リリースとデバッグではなにが違うのでしょうか?
わかる方がいらっしゃればご教授ください。お願いします。


引用未解決
トピックタグ
Rinset
 Rinset
(@Rinset)
ゲスト
結合: 23年前
投稿: 5
 

[プロジェクト]-[設定]-[リンク]のオブジェクト/ライブラリモジュールは、
デバッグモードとリリースモードでそれぞれ別ですので個別に指定する必要が
あります。

DLLの中身をデバッグできないという意味でしたら、デバッグの[追加するDLL]に
追加する必要があります。


返信引用
ハロ
 ハロ
(@ハロ)
ゲスト
結合: 23年前
投稿: 4
Topic starter  

Rinsetさんレスありがとうございます。
試してみましたが関係ない様でした。

DLLをロードしているソースはこんな感じです↓

// DLL 呼び出し
m_hDll = AfxLoadLibrary( LOADDLL_NAME );
if( m_hDll != NULL ) // ロード成功
{
LDLL = (LLC_SEARCHIF)::GetProcAddress( m_hDll, LDFNC_NAME );
if( LDLL == NULL )
{
::MessageBox( NULL, 関数取得失敗, W_CAPTION,
                MB_OK | MB_ICONEXCLAMATION | MB_TOPMOST );
return( FALSE ); // 異常終了
}
}
else
{
::MessageBox( NULL, DLLロード失敗, W_CAPTION,
            MB_OK | MB_ICONEXCLAMATION | MB_TOPMOST );
m_hDllLC = NULL;
return( FALSE ); // 異常終了
}

リリースだと成功するのですが、デバックで起動すると
関数取得失敗が帰ってきてしまいます。
なぜなんでしょう?


返信引用
ku
 ku
(@ku)
ゲスト
結合: 25年前
投稿: 312
 

1.アプリケーションがロードされたディレクトリ
2.カレント ディレクトリ
3.Windows システム ディレクトリ
4.Windows ディレクトリ
5.PATH 環境変数に設定されているディレクトリ
のどこかに、対象となるDLLがありますか?

リリース版のフォルダ(Release)にDLLをコピーしたけど
デバッグ版のフォルダ(Debug)にはDLLをコピーしていないのかな?


返信引用
dairygoods
 dairygoods
(@dairygoods)
ゲスト
結合: 23年前
投稿: 1421
 

関数取得失敗ということはDLLは見つかっているようです。
デバッグ版のフォルダ(Debug)等に
まだ関数をEXPORTしていない古いDLLが置き去りにされているとか…


返信引用
ハロ
 ハロ
(@ハロ)
ゲスト
結合: 23年前
投稿: 4
Topic starter  

kuさん、dairygoodsさんレスありがとうございます。

dllはカレントディレクトリにあります。
デバックのフォルダのDllは最新版でした。

う~んなにが悪いんだろう?


返信引用
初心者
 初心者
(@初心者)
ゲスト
結合: 24年前
投稿: 206
 

VCのツールのDependencyWalkerでそのDLLを開くと
DLL内の関数の一覧が見れると思います。
その中に「LDFNC_NAME」があれば良いんだと思いますが・・・?
詳しくないのではずしていたらごめんなさい。

DebugとReleaseでLDFNC_NAMEが違うなんてことはないですよね?

あと、
DebugとReleaseで呼んでいるDLLは同じですか?
Debug時のDLLが別のバージョンのVCでデバッグ用に
作られたものだとすると、動かない気がします。


返信引用
ハロ
 ハロ
(@ハロ)
ゲスト
結合: 23年前
投稿: 4
Topic starter  

みなさんレスありがとうございました。
なんとか解決できました。

原因は、初心者的なミスで申し訳ないのですが、
メニュー[プロジェクト]-[設定]のデバック時に
.defファイルをビルドしないにチェックが入っていました。
見落としていました。本当に申し訳ないです。
みなさんありがとうございました。

でもなんでチェックが入っていたのかは謎です?


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました