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