这是我第一次创build一个.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:无法parsing的外部符号”错误,我忘记了什么?
通常你为你的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