创建.lib文件 - 第一次

时间:2013-01-09 20:43:31

标签: c++ c windows static-libraries

这是我第一次创建.lib文件,我有以下C ++ .exe项目:

#include<stdio.h>

#pragma comment(lib, "mylib.lib")

int myFunction(void);

void main()
{
    myFunction(); 

} 

和另一个C项目(.lib项目)

   int __cdecl myFunction(void)
   {
   }

我正在成功编译.lib文件“mylib.lib”并将其放入我的exe文件的编译目录中,但是我收到了“错误LNK2019:未解析的外部符号”错误,我忘记了什么?< / p>

1 个答案:

答案 0 :(得分:3)

通常,您为lib提供了一个标题,并在lib和用户中都包含它。

首先,您应该在函数声明中使用extern关键字。而且因为你已经指定了调用约定__cdecl,所以你应该保持一致:

<强> mylib.h

extern int __cdecl myFunction(void);

<强> mylib.cpp

#include "mylib.h"

int __cdecl myFunction(void)
{
    return 42;
}

<强> libuser.cpp

#include <stdio.h>
#include "mylib.h"

#pragma comment(lib, "mylib.lib")

int main(void)
{
    printf( "The answer to the question is %d\n", myFunction() ); 
    return 0;
}

编辑 - 名称错误...

我刚刚看到你对C和C ++项目的评论。在这种情况下,您必须帮助编译器进行符号修改。在标题中,您可以执行以下操作:

#ifdef __cplusplus
extern "C" {
#endif

extern int __cdecl myFunction(void);

#ifdef __cplusplus
}
#endif