2016-09-08 9 views
0

ソースメンバーに別のメンバーを追加しようとしています。as400:Cヘッダーが含まれています

#include "/QSYS.LIB/MYLIB.LIB/TEST.FILE/HEADER.MBR" 

私はcrtcmod module(main) srcfile(test) srcmbr(main)
でコンパイルすると、私は、インクルードファイルが見つからないというエラーを取得します。

コマンドdsplnk obj('QSYS.LIB/MYLIB.LIB/TEST.FILE/HEADER.MBR')を使用する場合は

それはファイルを見つけるん。なぜ私のCに仕事が含まれていないのですか?

このファイルシステムは、私がアクセスできる唯一のファイルシステムである必要があるため、このファイルシステムを使用する必要があります。

+0

は、あなただけの 'の#include "HEADER.MBR"'とは、そのインクルードファイルの検索パスに '/ QSYS.LIB/MYLIB.LIB/TEST.FILE'を追加するようにコンパイラに指示することはできますか?従来のオプションは '-I/QSYS.LIB/MYLIB.LIB/TEST.FILE'ですが、あなたの特定のコンパイラに該当するかどうかはわかりません。 –

+0

はい、できますが、私のインクルードで同じエラーが発生しましたが、 "HEADER"に変更されました。MBR "と追加のコンパイルオプションincdir( 'QSYS.LIB/MYLIB.LIB/TEST.FILE')。 –

+0

アクセスコントロールの問題です。ファイルが存在すると、コンパイルプロセスは実際に開いて読み込めますか? –

答えて

1

解決策が見つかりました。私がしなければならなかったのは、QSYSパスを使用することでした。絶対パスについて

#include "HEADER" // if in the same file 

又は

#include "MYLIB/MYFILE(HEADER)" 

が動作するように含まれ、Iは絶対パスからコンパイルストリームファイルからコンパイルしなければなりませんでした。しかし、表示ファイルを含む#pragma mapincディレクティブは、QSYSパスを取るのでもう使用できません。

0

IBM i CおよびC++コンパイラには、includeを処理するための特別なコードがあります。それは、このような

#include <stdio.h>

として含ま見つけたとき、それは2つの方法のいずれかで含まれ、このために検索します:( SRCFILEパラメータを使用して)あなたのソースは、ソース物理ファイル内にある場合

  • 、検索パスを介してHというファイルを検索し、そのメンバーにはSTDIOという名前のメンバーが含まれます。デフォルトの検索パスは、QSYSINCライブラリとライブラリリストのすべてのライブラリです。
  • ソースが(SRCSTMFパラメータを使用して)IFSにある場合、そのソースはIFS検索パスを検索し、デフォルトでは/QIBM/includeになります。

独自のヘッダを見つけるために、あなたは2つのいずれかの操作を行うことができます

  • あなたのソースは、ソース物理ファイル内にある場合、あなたはHというファイルを作成してのメンバーとして、あなたのヘッダを追加することができますそのファイル。次に、そのファイルを含むライブラリーをライブラリー・リストに追加します。
  • ソースがIFSにある場合は、ヘッダーをIFSディレクトリに配置し、そのディレクトリをINCDIRパラメータにCRTBNDCまたはCRTCMODに追加できます。

例えば、

CPYF FROMFILE(MYLIB/TEST) TOFILE(MULIB/H) FROMMBR(HEADER) TOMBR(HEADER) CRTFILE(*YES) 

ADDLIBLE MYLIB 

crtcmod module(main) srcfile(test) srcmbr(main) 
関連する問題