C如何调用C++静态链接库里的函数?

时间:2022-05-17 09:16:58
测试代码如下图所示:
C如何调用C++静态链接库里的函数?

那个编译错误如何解决?

8 个解决方案

#1


PS:
Test工程是控制台
TestLib工程是静态链接库

#3


引用 2 楼 max_min_ 的回复:
c 语言调用c++ 写的静态库


都试了,不管用。
你有试成功过?

#4


需要lib文件。

#5


问这种问题一看就是入门的新手。

首先,检查下test.c文件中的头文件包含:#include<testlib.h>,其中testlib.h的文件路径与test.c是在一个目录下吗?你这样的头文件包含写法就是说testlib.h与test.c在一个目录下,头文件的包含写法应该是#include“filepath\testlib.h”.(看你的项目文件的目录树,感觉不太可能会是在一个目录下)
接着,如果确认testlib.h与test.c在同一目录下,就要把testlib项目编译生成的lib文件加载到test项目中,方式找到:项目->属性->input->additional dependence.将.lib文件的路径加进去。(我说的这个路径是VS2005,VC 6.0或许会有不一样,但选项还是差不多的)。

#6



int main()
{
    int x,y;
    printf("下面使用静态库进行加法:\n");
    printf("请输入个整数,用空格隔开\n");
    scanf("%d %d",&x,&y);
    printf("整数相加的结果是:\n%d\n\n",LibAdd(x,y));

    system("pause");
    return 0;
}
//下面的代码新建另外一个工程(是工程,不是解决方案),然后生成
Lib.h
int LibAdd(int x,int y);

Lib.cpp
#include "Lib.h"
int LibAdd(int x,int y)
{
    return x+y;
}

#7


引用 6 楼 zhaowech 的回复:

int main()
{
    int x,y;
    printf("下面使用静态库进行加法:\n");
    printf("请输入个整数,用空格隔开\n");
    scanf("%d %d",&x,&y);
    printf("整数相加的结果是:\n%d\n\n",LibAdd(x,y));

    system("pause");
    return 0;
}
//下面的代码新建另外一个工程(是工程,不是解决方案),然后生成
Lib.h
int LibAdd(int x,int y);

Lib.cpp
#include "Lib.h"
int LibAdd(int x,int y)
{
    return x+y;
}

把下面的代码放在main函数前面

#include <stdio.h>
#include <Windows.h>
#include "../StaticCompile/Lib.h"
#pragma comment(lib,"../debug/StaticCompile.lib")

新建的另外一个工程的名字必须叫做StaticCompile,或者你自己懂怎么改的话,就自己改

#8


需要对应的lib文件,如这样的格式在文件里引用,#pragma comment(lib,"../debug/StaticCompile.lib")

#1


PS:
Test工程是控制台
TestLib工程是静态链接库

#2


#3


引用 2 楼 max_min_ 的回复:
c 语言调用c++ 写的静态库


都试了,不管用。
你有试成功过?

#4


需要lib文件。

#5


问这种问题一看就是入门的新手。

首先,检查下test.c文件中的头文件包含:#include<testlib.h>,其中testlib.h的文件路径与test.c是在一个目录下吗?你这样的头文件包含写法就是说testlib.h与test.c在一个目录下,头文件的包含写法应该是#include“filepath\testlib.h”.(看你的项目文件的目录树,感觉不太可能会是在一个目录下)
接着,如果确认testlib.h与test.c在同一目录下,就要把testlib项目编译生成的lib文件加载到test项目中,方式找到:项目->属性->input->additional dependence.将.lib文件的路径加进去。(我说的这个路径是VS2005,VC 6.0或许会有不一样,但选项还是差不多的)。

#6



int main()
{
    int x,y;
    printf("下面使用静态库进行加法:\n");
    printf("请输入个整数,用空格隔开\n");
    scanf("%d %d",&x,&y);
    printf("整数相加的结果是:\n%d\n\n",LibAdd(x,y));

    system("pause");
    return 0;
}
//下面的代码新建另外一个工程(是工程,不是解决方案),然后生成
Lib.h
int LibAdd(int x,int y);

Lib.cpp
#include "Lib.h"
int LibAdd(int x,int y)
{
    return x+y;
}

#7


引用 6 楼 zhaowech 的回复:

int main()
{
    int x,y;
    printf("下面使用静态库进行加法:\n");
    printf("请输入个整数,用空格隔开\n");
    scanf("%d %d",&x,&y);
    printf("整数相加的结果是:\n%d\n\n",LibAdd(x,y));

    system("pause");
    return 0;
}
//下面的代码新建另外一个工程(是工程,不是解决方案),然后生成
Lib.h
int LibAdd(int x,int y);

Lib.cpp
#include "Lib.h"
int LibAdd(int x,int y)
{
    return x+y;
}

把下面的代码放在main函数前面

#include <stdio.h>
#include <Windows.h>
#include "../StaticCompile/Lib.h"
#pragma comment(lib,"../debug/StaticCompile.lib")

新建的另外一个工程的名字必须叫做StaticCompile,或者你自己懂怎么改的话,就自己改

#8


需要对应的lib文件,如这样的格式在文件里引用,#pragma comment(lib,"../debug/StaticCompile.lib")