UPDATE:Cygwin的將共享庫
刪除了約.so文件的老問題。他們不打算在Windows上工作。
我用頭文件解決了下面的問題。我猜這是每次使用C++進行鏈接時使用.h文件的標準慣例?
mydll.h:
#ifndef mydll_h_
#define mydll_h_
void hello();
#endif
myprog.cc:
#include "mydll.h"
int main()
{
hello();
return 0;
}
mydll.cc:
#include <iostream>
void hello()
{
std::cout << "Hello World!\n";
}
可替換地,我試圖使用Cygwin用的.dll庫本指南:https://cygwin.com/cygwin-ug-net/dll.html
他們的.c文件的編譯工作,但我想讓它爲我的.cc文件工作。有任何想法嗎?
mydll.cc:
#include <iostream>
void hello()
{
std::cout << "Hello World!\n";
}
myprog.cc:
int main()
{
hello();
return 0;
}
我輸入:
g++ -c mydll.cc
g++ -shared -o mydll.dll mydll.o
但是,當我鍵入:
g++ -o myprog myprog.cc -L./ -lmydll
我收到:
myprog.cc: In function ‘int main()’:
myprog.cc:4:10: error: ‘hello’ was not declared in this scope
hello();
「'hello'未在此範圍內聲明」這與庫無關。 .cc是一個C++源代碼文件後綴。你需要用C++聲明函數。 –
在Windows上,沒有「共享庫」。有DLL。它們的默認文件名後綴是.dll。 Cygwin沒有改變這一點。 –
我試着改變功能,但它給出了相同的錯誤。在你的第二個評論中,我想這會把問題縮小到第二個。 – Dobob