이것은 내 C ++ 코드입니다.
#include "stdlib.h"
#include "stdio.h"
#include <iostream>
int main(int argc, char *argv[] ) {
int width, height;
unsigned char *rgba;
FILE *fp = fopen("/home/pic.tif", "rb");
if(!fp)
std::cout<<"failed"<<std::endl;
rgba = floadtiff(fp, &width, &height);
fclose(fp);
if(rgba == 0)
printf("TIFF file unreadable\n");
}
내가 사용하고 이 @MalcolmMcLean에 의해 라이브러리를 내 loadtiff.c의 않고이 그것을 컴파일 무엇의는 GCC를 사용하여 해당 라이브러리에 링크하려합니다.
이것은 내 CMakeLists.txt입니다.
cmake_minimum_required(VERSION 2.8.12.2)
project (test)
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} cmake/)
add_executable(test tiffs.cpp)
target_link_libraries(test loadtiff)
그리고 다음은 프로그램을 만들려고 할 때 발생하는 오류입니다.
error: ‘floadtiff’ was not declared in this scope
loadtiff.c에 정의 된이 함수에 액세스 할 수없는 이유는 무엇입니까?
에 tipps.cpp
추가 :
extern "C" {
#include "loadtiff.h"
}
다음으로 CMakeLists.txt
변경 :
cmake_minimum_required(VERSION 2.8.12.2)
project(tiffs)
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} cmake/)
add_library(loadtiff tiffloader/loadtiff.c)
target_include_directories(loadtiff PUBLIC tiffloader/loadtiff.h)
add_executable(tiffs tiffs.cpp)
target_link_libraries(tiffs loadtiff)
여기서 "tiffloader /"는 "loadtiff"파일을 넣는 위치입니다.
"test"와 같은 예약어 뒤에 프로젝트 또는 대상의 이름을 지정하지 마십시오. 그렇지 않으면 CMake 경고가 표시됩니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다