MFCの拡張DLLが別のDLLをリンクするには? – プログラミング – Home

MFCの拡張DLLが別のDLLをリンク...
 
通知
すべてクリア

MFCの拡張DLLが別のDLLをリンクするには?


クリリン
 クリリン
(@クリリン)
ゲスト
結合: 23年前
投稿: 175
Topic starter  

いつもお世話になっています。
環境はWin2000 Pro(SP2),VC++6.0(SP5),MFC

現在、今まで[exe]だったのを[DLL]にする作業をしております。
DLLのプロジェyクトはMFCの拡張DLLです。
今まで、exeだった時は、IME関連などのDLLは正常にリンクしていました。
しかし、DLL化し、コンパイルをかけると、「すでに定義されています」のエラーメッセージ
が表示され、コンパイルが正常終了しません。

ちなみにIMEのリンクはこうしています。
#ifndef __IMECTRL__
#define __IMECTRL__
#pragma comment( lib, imm32.lib )
#include imm.h
#endif // __IMECTRL__

どうしたら、いいのでしょうか?
ご教授お願いします。


引用解決済
トピックタグ
不良PG
 不良PG
(@不良PG)
ゲスト
結合: 23年前
投稿: 188
 

__declspec
  dllexport
  dllimport
この辺りを調べるとよいかも・・


返信引用
いもちぃ
 いもちぃ
(@いもちぃ)
ゲスト
結合: 23年前
投稿: 70
 

「どこで」「なにが」定義されていないかって情報は
出てないんですか?


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

StdAfx.hの最後に(#endifの直前あたり)

#include <imm.h>
#pragma comment( lib, imm32.lib )

の2行を追加するというのは駄目ですか?
私はこれで上手くいったのですが。


返信引用
クリリン
 クリリン
(@クリリン)
ゲスト
結合: 23年前
投稿: 175
Topic starter  

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

いもちぃさんの言うメッセージはたぶん、
IMECtrl.obj : error LNK2005: _ExtRawDllMain@12 はすでに TEST.obj で定義されていま

だと思います。IMECtrlは自作のクラスで、このヘッダーファイルに
#ifndef __IMECTRL__
#define __IMECTRL__
#pragma comment( lib, imm32.lib )
#include imm.h
#endif // __IMECTRL__
としています。

で、saraさんのようにやってみましたが、結果は同じでした。

今日中にできなかったら、あきらめて、EXEからEXEの起動をしようと思います。
しかし、やりたいです。
アドバイスをお願いします。


返信引用
不良PG
 不良PG
(@不良PG)
ゲスト
結合: 23年前
投稿: 188
 

しまったよく読んでなかった・・
前の発言は、忘れてください

>今日中にできなかったら、あきらめて、EXEからEXEの起動をしようと思います。
>しかし、やりたいです。

こういう事は、書かないほうがよろしいかと・・
だったらそうすればってことになってしまうので・・


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

IMECtrlクラスをどのようにエクスポート・インポートさせていますか?
定義しているDLLでインクルードする場合と、参照するだけのDLLでインクルードする場合の宣
言の仕方をきちん区別したヘッダファイルにしないと、EXEでビルドできても、DLLでは上手く
いかないこともあります。もしAFX_EXT_CLASSなどを使っていたら、間違いなく失敗します。


返信引用
いもちぃ
 いもちぃ
(@いもちぃ)
ゲスト
結合: 23年前
投稿: 70
 

>IMECtrl.obj : error LNK2005: _ExtRawDllMain@12 はすでに TEST.obj で
>定義されています
>だと思います。IMECtrlは自作のクラスで、このヘッダーファイルに

これがあれば最初から、
1.ExtRawDllMain関数がどこに定義されてるか調べて
2.その実体が複数ないかチェック
すればよかったのだと思いますが・・・。

回答は外れてるかもしれません。(--;


返信引用
クリリン
 クリリン
(@クリリン)
ゲスト
結合: 23年前
投稿: 175
Topic starter  

みなさん、すいません。
DLLの作成方法をよく学んでみます。
解決方法があったら記載します。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

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