【发布时间】:2020-11-23 05:08:28
【问题描述】:
我想制作一个用于测试的库,为此,我想制作一个只返回一些 char* 的 c 程序。我是基于cmake 构建的。这是我的 cmake 文件:
cmake_minimum_required(VERSION 2.8)
project(smc)
add_executable(${PROJECT_NAME} "main.c" "info.cpp")
target_link_libraries(${PROJECT_NAME}
-lssh
)
set(HDRS
${NMEA_HDRS}
info.h
)
标题:
#ifndef INFO_H
#define INFO_H
int sshConnection();
char* getcpuusage();
#endif // INFO_H
来源:
#include "info.h"
#include <libssh/libssh.h>
#include <stdio.h>
int sshConnection()
{
ssh_session my_ssh_session = ssh_new();
const void* ip = "localhost";
if( my_ssh_session == NULL ) {
printf( "Error creating ssh session" );
return 1;
}
ssh_options_set(my_ssh_session, SSH_OPTIONS_HOST, "localhost");
ssh_options_set(my_ssh_session, SSH_OPTIONS_USER, "heydari.f");
int rc = ssh_connect(my_ssh_session);
if( rc != SSH_OK ) {
printf("Error with connecting" );
ssh_free(my_ssh_session);
return -1;
}
rc = ssh_userauth_password(my_ssh_session, NULL, "heydari@linux");
if( rc != SSH_AUTH_SUCCESS) {
printf("Error with authorization %c " , ssh_get_error(my_ssh_session) );
ssh_disconnect(my_ssh_session);
ssh_free(my_ssh_session);
return -1;
}
}
char *getcpuusage()
{
sshConnection();
char * usage = "44%";
return usage;
}
当我在 main.cpp 中使用这个头文件时:
#include <stdio.h>
#include "info.h"
int main()
{
char* f = getcpuusage();
return 0;
}
我收到了这个错误:
.../projects/smc/smc/main.c:-1: error: undefined reference to `getcpuusage'
我做 cmake 有错吗?
【问题讨论】:
-
我编辑了对 Qt 的引用,因为这个问题似乎根本不包含任何与 Qt 相关的内容。也许您正在使用 Qt Creator 构建非 Qt 项目? Qt Creator 只是一个 IDE(即使它有很多 Qt 开发的功能),而 Qt 是一个框架,您可以使用几乎任何 IDE 或代码编辑器进行开发,而不仅仅是 Qt Creator。
-
是的,我正在使用 qt creator 来构建我的项目。谢谢。 @hyde
标签: c++ c cmake undefined-reference