Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
as400:C头文件包括_C_File_Header_Include_Ibm Midrange - Fatal编程技术网

as400:C头文件包括

as400:C头文件包括,c,file,header,include,ibm-midrange,C,File,Header,Include,Ibm Midrange,我试图在源成员中包含另一个成员 #include "/QSYS.LIB/MYLIB.LIB/TEST.FILE/HEADER.MBR" 当我使用crtcmod modulemain srcfiletest srcmbmain编译时, 我得到一个错误,它表示找不到包含文件 如果使用命令dsplnk obj'QSYS.LIB/MYLIB.LIB/TEST.FILE/HEADER.MBR' 它确实找到了文件。为什么我的C不包括工作 我必须使用这个文件系统,因为它是我唯一可以访问的文件系统。我找到了解

我试图在源成员中包含另一个成员

#include "/QSYS.LIB/MYLIB.LIB/TEST.FILE/HEADER.MBR"
当我使用crtcmod modulemain srcfiletest srcmbmain编译时, 我得到一个错误,它表示找不到包含文件

如果使用命令dsplnk obj'QSYS.LIB/MYLIB.LIB/TEST.FILE/HEADER.MBR'

它确实找到了文件。为什么我的C不包括工作


我必须使用这个文件系统,因为它是我唯一可以访问的文件系统。

我找到了解决方案。我所要做的就是使用QSYS路径

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


为了使绝对路径包含工作,我必须从一个从绝对路径编译的流文件编译。但是,包含我的显示文件的指令pragma mapinc将不再工作,因为它采用QSYS路径。

我找到了解决方案。我所要做的就是使用QSYS路径

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


为了使绝对路径包含工作,我必须从一个从绝对路径编译的流文件编译。但是,包含我的显示文件的指令PrabMaMaPCin将不再工作,因为它需要QSysPix.t/P>< P> IBM iC++C++编译器有特殊的代码来处理。当它发现包含时,例如

包括

它将通过以下两种方式之一搜索此信息:

如果您的源位于使用SRCFILE参数的源物理文件中,它将在其搜索路径中搜索名为H的文件,其中包含名为STDIO的成员并将其包含在内。默认搜索路径是QSYSINC库和库列表上的所有库。 如果您的源在IFS中使用SRCSTMF参数,它将通过默认为/QIBM/include的IFS搜索路径进行搜索。 要查找自己的标题,可以执行以下两种操作之一:

如果源文件位于源物理文件中,则可以创建一个名为H的文件,并将标题添加为该文件的成员。然后将包含该文件的库添加到库列表中。 如果源代码位于IFS中,则可以将标题放入IFS目录,并将该目录添加到CRTBNDC或CRTCMOD的INCDIR参数中。 例如


IBM i+c和C++编译器有特殊的代码来处理。当它发现包含时,例如

包括

它将通过以下两种方式之一搜索此信息:

如果您的源位于使用SRCFILE参数的源物理文件中,它将在其搜索路径中搜索名为H的文件,其中包含名为STDIO的成员并将其包含在内。默认搜索路径是QSYSINC库和库列表上的所有库。 如果您的源在IFS中使用SRCSTMF参数,它将通过默认为/QIBM/include的IFS搜索路径进行搜索。 要查找自己的标题,可以执行以下两种操作之一:

如果源文件位于源物理文件中,则可以创建一个名为H的文件,并将标题添加为该文件的成员。然后将包含该文件的库添加到库列表中。 如果源代码位于IFS中,则可以将标题放入IFS目录,并将该目录添加到CRTBNDC或CRTCMOD的INCDIR参数中。 例如


是否可以只包含HEADER.MBR并指示编译器将/QSYS.LIB/MYLIB.LIB/TEST.FILE添加到其包含文件搜索路径?传统的选项是-I/QSYS.LIB/MYLIB.LIB/TEST.FILE,但我不知道这是否适用于您的特定编译器。是的,我可以,尽管我的include更改为HEADER.MBR和额外的编译选项incdir'QSYS.LIB/MYLIB.LIB/TEST.FILE时出现了相同的错误。也许这是一个访问控制问题。如果文件存在,编译过程真的可以打开并读取它吗?是的,我将头编译成一个模块没有问题。只有当我想编译另一个使用头函数的文件时。我希望ILE模块在将模块绑定到一起时能够找到所需的函数,但它会抱怨未定义的函数,因此我想我也需要包含它。我不熟悉您的工具链,因此我可能不是帮助您的最佳人选。但是,我注意到,您现在似乎说了两件完全不同的事情:1编译器找不到HEADER.MBR文件,2链接器找不到您希望它找到的某些函数。您可以只包含HEADER.MBR并指示编译器将/QSYS.LIB/MYLIB.LIB/TEST.file添加到其包含文件搜索路径吗?传统的选项是-I/QSYS.LIB/MYLIB.LIB/TEST.FILE,但我不知道这是否适用于您的特定编译器。是的,我可以,尽管我的include更改为HEADER.MBR和额外的编译选项incdir'QSYS.LIB/MYLIB.LIB/TEST.FILE时出现了相同的错误。也许这是一个访问控制问题。如果文件存在,编译过程真的可以打开并读取它吗?是的,我将头编译成一个模块没有问题。只有当我想编译另一个使用头函数的文件时。我希望ILE模块在将模块绑定在一起时能够找到所需的函数,但它抱怨未定义
我不熟悉你的工具链,所以我可能不是帮助你的最佳人选。但是,我注意到,您现在似乎说了两件完全不同的事情:1编译器找不到HEADER.MBR文件,2链接器找不到您希望它找到的某些函数。
CPYF FROMFILE(MYLIB/TEST) TOFILE(MULIB/H) FROMMBR(HEADER) TOMBR(HEADER) CRTFILE(*YES)

ADDLIBLE MYLIB

crtcmod module(main) srcfile(test) srcmbr(main)