09/02/12 15:34:43
C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレに
お願いします。
前スレ
C++相談室 part65
スレリンク(tech板)
2:デフォルトの名無しさん
09/02/12 15:43:49
STLつかうと一気に実行ファイルサイズが10倍に?!
環境によるだろ。
俺はBorland-C++5.6.2に -D_RTLDLL オプションを指定して、極力
ランタイムを使用するようにして使っているが、例えばstd::vectorを
使っても使わない時と比べ10Kほどしか増えない
すげえ。ダイナミックリンクしといてファイルサイズが増えないとかいってるよ。この人。
C1010: プリコンパイル済みヘッダーの検索中に予期しない EOF を検出しました。
とかいうエラーが出るんだけどこれってどうすればいいの?
#include <stdafx.h>
後死ね。
言葉が悪いな。それで教えているつもりか。
まぁヒントぐらいにはなったな。
うむごくろう。
3:デフォルトの名無しさん
09/02/12 21:58:53
真スレです 仲良く使ってね楽しく使え クズども
4:デフォルトの名無しさん
09/02/13 00:19:34
基本的なことなのですが、質問させてください。
DLL のクラスの変数をほかのアプリケーションから利用したいのですが、アプリケーションのビルドでリンカーエラーになってしまいます。
---DLL のクラスのヘッダーの一部---
class __declspec(dllexport) Sample1
{
public:
Sample1(void);
~Sample1(void);
public:
static const char *str_data;
};
---DLLのクラスのCPPの一部---
const char *Sample1::str_data = "Hoge";
---アプリケーションのCPPの一部---
_TCHAR buf[255];
_swprintf(buf, _T("str_data = %s\r\n"), Sample1::str_data);
::OutputDebugString(buf);
DLLはビルドできますが、アプリケーションでは
error LNK2001: 外部シンボル ""public: static char const * const Sample1::str_data" (?str_data@Sample1@@2PBDB)" は未解決です。
とでてしまいます。
よろしくお願いします。
5:デフォルトの名無しさん
09/02/13 00:21:55
DLLを使う側では、__declspec(dllimport)付きでクラス定義している?
6:4
09/02/13 00:24:20
>>5
していません。 __declspec(dllexport) はしているのですが。
dllimport については使ったことがなかったので調べて見ます。ありがとうございます。
7:4
09/02/13 00:54:46
すいません。まだ、少ししか dllimport について調べていないのですが、もう一度質問させてください。
以下のように アプリケーションのヘッダーに dllimport を追加しましたが、同じリンカーエラーになりました。
---アプリケーションのヘッダー---
#include "resource.h"
#include "..\\Test_class\\Sample1.h"
#pragma comment(lib, "Test_class.lib")
__declspec(dllimport) Sample1;
リンカーエラー
Test_classApp.obj : error LNK2001: 外部シンボル ""public: static char const * const Sample1::str_data" (?str_data@Sample1@@2PBDB)" は未解決です。
ちなみに、VC++ 2008 Express を使っています。
static const のメンバ変数の書き方は、
URLリンク(frog.raindrop.jp)
などを参考にさせていただいたのですが、問題ないように思えます。
はっきりいって、原因がさっぱりわかりません。
強いていえば、やはり dllimport のような DLL をつかった場合の設定を間違えているのかと思っています。
今日はもうレスができないかもしれませんが、よろしくおねがいします。
8:デフォルトの名無しさん
09/02/13 00:58:13
関数のときと同じで、DLLを作る側はclass __declspec(dllexport) Sample1にして、
使う側はclass __declspec(dllimport) Sample1になるようにしないとだめだよ。
9:デフォルトの名無しさん
09/02/13 02:22:29
>>1
ゴミクズ
10:デフォルトの名無しさん
09/02/13 08:49:08
>>9
生ごみ
11:デフォルトの名無しさん
09/02/13 11:18:34
オブジェクトを作成するとき
クラス名 ob1;
クラス名 *ob2;
この上と下の違いはなんでしょうか?
上は新しくクラスをつくっていて
下はクラスのアドレスを渡しているということですか?
12:デフォルトの名無しさん
09/02/13 11:36:20
>>11
上はオブジェクトの作成。
下はオブジェクトへのポインタの作成。
ただの宣言文なのでアドレスを渡しているわけではない。
13:デフォルトの名無しさん
09/02/13 11:55:06
↓こっち先に使わないか?
C++相談室 part66
スレリンク(tech板)l50