互联网营销与管理,企业网站优化分为哪两个方向,wordpress 写代码,电商服务站点建设方案1.首先看文件形式 其中cpp1是直接调用.cpp和生成.so的文件夹。
cpp2是测试生成的.so可以使用的文件夹。
2.先直接编译.cpp检查代码没问题
a.cpp内容:
#include iostream
#include a.hvoid A::readImg(char* path)
{B b;b.readImg(path);}
a.h内容:
…1.首先看文件形式 其中cpp1是直接调用.cpp和生成.so的文件夹。
cpp2是测试生成的.so可以使用的文件夹。
2.先直接编译.cpp检查代码没问题
a.cpp内容:
#include iostream
#include a.hvoid A::readImg(char* path)
{B b;b.readImg(path);}
a.h内容:
#ifndef A_H_
#define A_H_#include b.hclass A
{public:A(){}~A(){}void readImg(char* path);};#endif
b.cpp内容:
#include b.hvoid B::readImg(char* path)
{cv::Mat img cv::imread(path);std::cout图像宽为img.cols\t高度为img.rows\t通道数为img.channels()std::endl;
}
b.h内容
#ifndef B_H_
#define B_H_#include opencv2/opencv.hpp
class B
{public:void readImg(char* path);
};#endif
main.cpp内容
//main.cpp
#include a.hint main()
{char *path (char*) test.jpg;A a;a.readImg(path);return 0;
}CMakeLists.txt内容:
cmake_minimum_required(VERSION 2.6)project(cpp1)add_definitions(-stdc11)set(CMAKE_CXX_STANDARD 11)
set(CMAKE_BUILD_TYPE Debug)find_package(OpenCV REQUIRED)
include_directories(OpenCV_INCLUDE_DIRS)add_executable(main ${PROJECT_SOURCE_DIR}/main.cpp a.cpp b.cpp)
target_link_libraries(main ${OpenCV_LIBS})add_definitions(-O2 -pthread)make以后生成可执行文件main可打印如下信息说明整个代码都是没问题的。
执行./main 3.在cpp2调用.so文件
首先在cpp1下生成.so文件(注意.so文件要以lib开头在使用的时候要把lib去掉)
g -fpic -shared -o libCPP1.so a.cpp b.cpp -I /usr/local/include -L /usr/local/lib -lopencv_core -lopencv_highgui
生成libCPP1.so文件。
新建cpp2文件夹将cpp1的main.cpp .h文件和libCPP1.so拷贝进来。
第一种执行方式:
g -o ./main -stdc11 main.cpp -L ./ -lCPP1即可生成可执行文件main,打印一下发现结果一样说明生成的.so文件成功.
执行./main 第二种执行方式:
CMakeLists.txt内容: 将生成的.so路径作为可链接库
cmake_minimum_required(VERSION 2.6)project(cpp2)add_definitions(-stdc11)set(CMAKE_CXX_STANDARD 11)
set(CMAKE_BUILD_TYPE Debug)# find_package(OpenCV REQUIRED)
# include_directories(OpenCV_INCLUDE_DIRS)add_executable(main ${PROJECT_SOURCE_DIR}/main.cpp)
# target_link_libraries(main ${OpenCV_LIBS})
target_link_libraries(main ${OpenCV_LIBS} /home/fzh/AI/learn_cplus/learn_some_api/cpp2/libCPP1.so)
add_definitions(-O2 -pthread)cmake以后在make生成可执行文件main说明编译成功。
执行./main