DLL内でのCString – プログラミング – Home

通知
すべてクリア

DLL内でのCString


いしい
 いしい
(@いしい)
ゲスト
結合: 18年前
投稿: 4
Topic starter  

Visual Studio .NET 2003 を使って、Win32 アプリケーションウィザードで
DLLを作成しようとしています。

ウィザードで作成されたテンプレートにC++のクラスができるのですが、
ここで、CString を使おうとすると
「error C2065: 'CString' : 定義されていない識別子です。」
というエラーになります。

Win32 DLLのC++ではCStringは使えないのでしょうか?
使えるとしたら何かエラー回避方法があるのでしょうか?

初心者で、色々試したのですがうまくいきません。
アドバイスいただけたら幸いです。
よろしくお願いします。


引用解決済
トピックタグ
Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

MFCを使うに設定していますか?

プロジェクトのプロパティの
[構成プロパティ]-[全般]-[MFC の使用法]
http://msdn2.microsoft.com/ja-jp/library/8x480de8(VS.80).aspx

また、ひつようなヘッダファイルをインクルードしていますか?
CStringならばcstringt.h。MFC全般を使うようであればafx.hでよさそう。
http://msdn2.microsoft.com/en-us/library/5bzxfsea(VS.80).aspx


返信引用
いしい
 いしい
(@いしい)
ゲスト
結合: 18年前
投稿: 4
Topic starter  

Blueさん、早速にフォローいただきありがとうございます。

ご指摘のあった点を色々試してみていますが、うまくいきません。

[構成プロパティ]-[全般]-[MFC の使用法]は、
「スタティック ライブラリで MFC を使用する」
に設定して、afx.hをインクルードしたら
c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\include\afxv_w32.h
(18) : fatal error C1189: #error : WINDOWS.H already included. MFC apps must
not #include <windows.h>
というエラーになります。Win32 の場合はafx.hをインクルードしたら駄目なようです。

cstring.h をインクルードしようとすると、、
fatal error C1083: include ファイルを開けません。'cstring.h': No such file or
directory というエラーとなりインクルードできません。

というような状況です。
引き続き色々試してみますが、お気づきの点がありましたら教えてください。
よろしくお願いします。


返信引用
Ban
 Ban
(@ban)
Prominent Member
結合: 5年前
投稿: 776
 

afx.hをincludeに追加したなら、windows.hを直接includeしてはいけない。
エラーメッセージの通りです。プリコンパイルヘッダあたりにwindows.hの
inculudeがあるはずなので、置換してください。

# 少なくともDLLの「外部インターフェイス」にはやめておくべきかと>CString


返信引用
いしい
 いしい
(@いしい)
ゲスト
結合: 18年前
投稿: 4
Topic starter  

Banさんありがとうございます。

ご指摘のありました通り、window.h を afx.h にしました所、
コンパイルはうまく通りました。

ところが、、、、
error LNK2005: _DllMain@12 は既に uafxcwd.lib(dllmodul.obj) で定義されています。
というエラーが出ました。

win32 ウィザードで出力されたのテンプレートにある DllMain のエントリー関数を
コメントアウトしましたら、コンパイル、リンクが通りました。

コンパイル、リンクは通過したのですが、これで出来上がったものはいったい正しいのか
どうか解りません。なにが出来上がったのか、初心者の私には理解できていません。

このような形で出来上がったDLLは正当に使えるのでしょうか?

すみませんが、アドバイスいただけませんでしょうか?
よろしくお願いします。


返信引用
Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

やはりMFCを使うのが前提であるのであれば、
最初からMFC DLLとしてプロジェクトを作り直したほうが無難だと思われます。


返信引用
いしい
 いしい
(@いしい)
ゲスト
結合: 18年前
投稿: 4
Topic starter  

Blueさん、Banさんありがとうございました。
C++Builderでは同様のようなことができていたので、VC++でも同じように
組みあげようとしたのですが、色々未知のことがあり挫折してしまいそうです。
MFC DLL というのを検討してみます。
また助けてください。ありがとうございました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

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