3
我正在阅读有关静态和动态库的信息。要探索更多,我创建三个文件2 .cpp
文件和1个.h
文件使用动态库时未定义的引用问题
demo.h
class demo
{
int a;
public:
demo();
demo(const demo&);
demo& operator=(const demo&);
~demo();
};
demo.cpp
#include "demo.h"
#include <iostream>
demo::demo():a()
{
std::cout<<"\nInside default constructor\n";
}
demo::demo(const demo&k)
{
this->a=k.a;
std::cout<<"\nInside copy constructor\n";
}
demo& demo::operator=(const demo&k)
{
this->a=k.a;
std::cout<<"\nInside copy assignment operator\n";
return *this;
}
demo::~demo()
{
std::cout<<"\nInside destructor\n";
}
main.cpp
#include "demo.h"
int main()
{
demo d;
demo d1=d;
demo d2;
d2=d;
}
现在我创建两个目标文件:demo.o
和main.o
使用g++ -c demo.cpp
和g++ -c main.cpp
,然后创建使用ar cr demo.a demo.o main.o
我还创建使用g++ -shared demo.o main.o -o demo.dll
一个动态库,现在,当我用我的静态库(g++ demo.a -o demo
)创建可执行的一切静态库一切顺利。但是当我使用我的动态库创建可执行文件时,出现错误Undefined reference to main
我已经使用以下命令来创建可执行文件g++ demo.dll -o demo
。
当我使用g++ main.cpp -o demo demo.dll
一切都很好,为什么?
我在哪里错了?
这对我的作品。你可以发布你的makefile,如果你使用一个?当你试图从一个共享库,比如helloWorld或者'int main(){return(0);}'来做更简单的事情时会发生什么呢? – Beta 2010-08-05 04:28:05