标题:g++ 编译.o目标文件出错,不知什么原因?
只看楼主
sharplong
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:122
专家分:121
注 册:2017-3-27
结帖率:85.71%
已结贴  问题点数:20 回复次数:4 
g++ 编译.o目标文件出错,不知什么原因?
say.h
程序代码:
#include <iostream>
void sayhello(void);
class Say
{
        private:
                char * string;
        public:
                Say( char *  str)
                {
                        string  = str;
                }
                void sayThis(const char * str)
                {
                        std::cout << str << "from a static library\n";
                }
                void sayString(void);
};
~                                                                                         
~                                                                                         
~      


-----------------------------------------
say.cpp
程序代码:
#include "say.h"
void Say::sayString()
{
        std::cout << string << "\n";
}

Say librarysay("library instance of Say");
~                                                                                         
~                                                


--------------------------------------------
sayhello.cpp
程序代码:
#include "say.h"
void sayhello()
{
        std::cout << "hello from a static library\n";
}

+++++++++++++++++++++++++++++++++++++++++++++
以下是报错:

Ubuntu 环境 g++

-virtual-machine:~/桌面/CLearning$ g++ say.cpp
say.cpp:7:41: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings]
 Say librarysay("library instance of Say");
                                         ^
/usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/Scrt1.o:在函数‘_start’中:
(.text+0x20):对‘main’未定义的引用


我想把 say.cpp 和 sayhello.cpp编译成目标文件,然后做成静态库,可是一编译就报错了,新手不知什么原因??
搜索更多相关主题的帖子: g++ 编译 void char cpp 
2017-10-31 18:20
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
说得很清楚呀,"library instance of Say"这个字符串常量不可以隐式自然地转化为char*类型
2017-10-31 18:49
sharplong
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:122
专家分:121
注 册:2017-3-27
得分:0 
回复 2楼 rjsp
-virtual-machine:~/桌面/CLearning$ g++ say.cpp
/usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/Scrt1.o:在函数‘_start’中:
(.text+0x20):对‘main’未定义的引用
collect2: error: ld returned 1 exit status

不是啊,主要是下面那个错误,main没有定义

跟据科学研究呢,拥有一个良好的头像呢,有助于提高帖子关注度,和被友好对待的可能性:)准确来说呢,其实,我是一个演员....和兼职汽车维修员
2017-10-31 19:40
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:20 
如果与你的问题没关系,那你贴它出来干什么?故意捣乱?
你应该删掉一切无关的东西,包括代码,然后这么问:
g++ say.cpp 编译时报main函数不存在,可能我却只想将之编译成目标文件,而不需要link成可执行文件。请问怎么办?

这样别人就知道你到底要干什么,然后告诉你命令行是 g++ -c say.cpp
2017-11-01 08:33
sharplong
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:122
专家分:121
注 册:2017-3-27
得分:0 
回复 4楼 rjsp
谢谢回答。

跟据科学研究呢,拥有一个良好的头像呢,有助于提高帖子关注度,和被友好对待的可能性:)准确来说呢,其实,我是一个演员....和兼职汽车维修员
2017-11-02 14:15



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-481990-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.096814 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved