헤더에 있지만 소스 파일 (공유 객체/DLL에서 가져온 파일)에 OKAY could not be resolved
이 있습니다. 헤더는 다른 프로젝트에 있지만 ppackage가 제대로 해결 되었기 때문에 관련이 있어야한다고 생각하지 않습니다.소스 파일에서 보이지 않는 헤더에 enum을 선언 하시겠습니까?
업데이트, 여기서 소스 :
- foor.ca/k/a 소스 : https://github.com/linuxrocksrulers/m5/blob/ec4f62ba1c/foor/src/foor.c#L19
- m5.ha/K/헤더 : 행 https://github.com/linuxrocksrulers/m5/blob/ec4f62ba1c/m5/src/include/m5.h#L34
빌드 출력 빌드 불쌍한 프로젝트.
make all
Building file: ../src/foor.c
Invoking: GCC C Compiler
gcc -I"/home/lk/proj/m5/m5/src/include" -O0 -g3 -Wall -c -fmessage-length=0 -fPIC -MMD -MP -MF"src/foor.d" -MT"src/foor.d" -o "src/foor.o" "../src/foor.c"
In file included from ../src/foor.c:9:0:
/home/lk/proj/m5/m5/src/include/m5.h:33:3: warning: #warning ohshit
../src/foor.c:12:1: warning: missing braces around initializer
../src/foor.c:12:1: warning: (near initialization for 'fs[1]')
Finished building: ../src/foor.c
Building target: libfoor.so
Invoking: GCC C Linker
gcc -shared -o "libfoor.so" ./src/foor.o
Finished building target: libfoor.so
헤더 :
소스 파일#include <stdio.h>
enum {
OKAY = 0,
ERR,
ERRANY,
// list shortened
ERRNOTFOUND,
};
typedef struct { ..foobars.. } ppackage;
: 당신이 헤더를 포함하는 경우
#include <header.h> // Did add -I ../include, where the header is
ppackage knock(ppackage *in)
{
return OKAY; // ERROR
}
하고 나는 많은 프로젝트를 가지고 있기 때문에 매우 이식성이없고 심지어 더러운 것입니다. 그러나 그렇습니다. 이것을 교차 프로젝트 헤더라고합니다. 이상하게도 공유 라이브러리/DLL이 아닌 메인 프로그램은 (OK와 모든 것을 사용할 수 있습니다.) 구조체를 사용할 수있는 여기에 표시된 소스 파일에 반대합니다 .... – Eregrith
그리고 난 것이다 당신의 자신의 헤더 파일 대신 사용법 #include <>''의'의 #include ""'사용하고 유지해야 – imacake
github에 업로드 한 디렉토리 구조에 따라 소스 파일은'include' 디렉토리와 같은 디렉토리에 있기 때문에'-I ..'를 사용하지 말아야합니다. –