プログラミングの部屋  ▲前 へ ▼次 へ 一覧へ戻る  プログラミングの部屋 メニューへ  WebBoard総合メニューへ
この投稿に対し、フォローを投稿する
日 時'04年 8月19日 21:25:24
タイトルRe(1):DLL間の参照 (閲覧回数:1104回)
投稿者(^_^;)さん 

>[8月19日 17:54 takegawaさんの投稿]
>初めて投稿させて頂きます。以下の実現につきご教授ください。
>
>DLL1とDLL2のプロジェクトがあり、以下のように記述しています。
>
>■ DLL1プロジェクト
>
> [dll1.c]
> int value = 5; (実体)
>
> [dll1.h]
> extern int value; (外部変数)
>
>■ DLL2プロジェクト
>
> [dll2.c]
> #include "dll1.h"
>
> func ()
> {
> int a = value; (☆)
> }
>
>DLL2のビルドでvalueの実体がないと怒られます。(☆)
>当然といえば当然なんですが、どうにかDLL1で定義された外部変数をDLL2で参照できる手法ありますでしょうか?
>補足ですが、上記プロジェクトはApacheモジュールでLinux上では正常に動作していました。
>VCとLinuxのメイクファイルで何か特殊な差分があるのでしょうか?
>
>何卒宜しくお願い致します。

何故、dll1.hで宣言している変数をdll1.cでも宣言しているのでしょうか?

今の言語では使えるかどうかはわかりませんが、
私が実践で覚えた方法を下記に記載しておきますので
参考程度にでも。

[dll1.c]
#define FLAG 1
value = 5;


[dll1.h]
#ifdef FLAG
// FLAG =1の時ここを通る
int value;
#else
// FLAG <>1の時ここを通る
extern int value;
#endif


[dll2.c]
#define FLAG 0
#include "dll1.h"

func ()
{
int a = value; (☆)
}


フォロー元の投稿
 ◆[ 8/19 17:54] DLL間の参照 // takegawaさん
<この投稿に対するフォローはありません>