Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/154.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 将问题与g++;,但与cc无关_C++_C_Linker - Fatal编程技术网

C++ 将问题与g++;,但与cc无关

C++ 将问题与g++;,但与cc无关,c++,c,linker,C++,C,Linker,我使用的是64位CentOS版本的Linux。我试图在C++和C++程序中创建和使用静态库(LabBoosial.a)。我可以用C编译这个库,并用ar生成libUtility.a文件。然后我尝试将它链接到我的程序中。当我使用C编译器时,一切都正常 cc myprog.c -o myprog -I/usr/local/include -L/LocationOfMyLib -lUtility 但是,当我使用g++编译器时,我收到了错误 g++ myprog.c -o myprog -I/usr/l

我使用的是64位CentOS版本的Linux。我试图在C++和C++程序中创建和使用静态库(LabBoosial.a)。我可以用C编译这个库,并用ar生成libUtility.a文件。然后我尝试将它链接到我的程序中。当我使用C编译器时,一切都正常

cc myprog.c -o myprog -I/usr/local/include -L/LocationOfMyLib -lUtility
但是,当我使用g++编译器时,我收到了错误

g++ myprog.c -o myprog -I/usr/local/include -L/LocationOfMyLib -lUtility
myprog.c: In function 'int main(int, char**)':
/tmp/cckIN1Yk.o: In function `main':
myprog.c:(.text+0x41): undefined reference to `Utility_HiWorld(char*)'
collect2: ld returned 1 exit status
我有C和C++的经验,但没有创造自己的经验。 图书馆。此库只有一个名为Utility_HiWorld()的子例程。而myprog.c只调用一个子例程。我在这里做错了什么


新:好吧,我肯定没有用“外部”C。我甚至不知道那是什么。解决了它。

< P>我猜你没有告诉你的C++编译器,外部函数是用C.</P>写的。 <>你想从C和C++中使用这个库,你需要在库头文件中这样做。
#ifdef __cplusplus
extern "C" {
#endif

void Utility_HiWorld(char*);

#ifdef __cplusplus
}
#endif

<代码> -CPLUS PLUS 只定义C++程序,因此C++程序将看到代码>外部“C”{ } /COD>这是它需要告诉的,<代码> UTITYYYHiWorks是C函数。 有关更多详细信息,请参阅


只是猜测,如果你认为问题是别的,就发布一些代码。

< P>我猜你没有告诉你的C++编译器,外部函数是用C.</P>写的。 <>你想从C和C++中使用这个库,你需要在库头文件中这样做。
#ifdef __cplusplus
extern "C" {
#endif

void Utility_HiWorld(char*);

#ifdef __cplusplus
}
#endif

<代码> -CPLUS PLUS 只定义C++程序,因此C++程序将看到代码>外部“C”{ } /COD>这是它需要告诉的,<代码> UTITYYYHiWorks是C函数。 有关更多详细信息,请参阅


只是猜测,如果你认为问题是别的,就发布一些代码。

C++编译器能够在链接时告诉你函数参数的类型,这会使你感到惊慌。在库的头文件中缺少代码>外“C”/CUT>。C和C++是不同的语言。如果你用C++编译器编译你的C程序,它可能会或可能不起作用。C++编译器能够在链接时告诉你函数参数的类型,这会使你感到惊慌。在库的头文件中,C++中缺少代码>外部“C”/代码>,C和C++是不同的语言。如果你用C++编译器编译C程序,它可能会或可能不起作用。谢谢是的,这把它修好了。谢谢