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