VC++中这个错误: unresolved external symbol
我做一个密码算法的程序遇到了一个问题搞了一下午都没弄出来.我想跳楼.问题如下:我用了三个.cpp文件.我在主函数文件中调用了另一个文件的下面两个函数,我确定我在main函...
我做一个密码算法的程序遇到了一个问题搞了一下午都没弄出来.
我想跳楼.
问题如下:我用了三个.cpp文件.我在主函数文件中调用了另一个文件的下面两个函数,我确定我在main函数中调用了.不是网上说的那种定义了但没用到.而且编译都没问题.
网上说的各种方法我几乎都看了不行.
main.obj : error LNK2001: unresolved external symbol "int __cdecl K_0(int *,int)" (?K_0@@YAHPAHH@Z)
main.obj : error LNK2001: unresolved external symbol "int __cdecl Input(void)" (?Input@@YAHXZ)
Debug/DES.exe : fatal error LNK1120: 2 unresolved externals
执行 link.exe 时出错.
DES.exe - 1 error(s), 0 warning(s) 展开
我想跳楼.
问题如下:我用了三个.cpp文件.我在主函数文件中调用了另一个文件的下面两个函数,我确定我在main函数中调用了.不是网上说的那种定义了但没用到.而且编译都没问题.
网上说的各种方法我几乎都看了不行.
main.obj : error LNK2001: unresolved external symbol "int __cdecl K_0(int *,int)" (?K_0@@YAHPAHH@Z)
main.obj : error LNK2001: unresolved external symbol "int __cdecl Input(void)" (?Input@@YAHXZ)
Debug/DES.exe : fatal error LNK1120: 2 unresolved externals
执行 link.exe 时出错.
DES.exe - 1 error(s), 0 warning(s) 展开
6个回答
展开全部
unresolved external symbol 这类错误是编译器找不到指定的符号定义。
它是在连接的时候出现的,有两种可能:1、你写的这个函数只有省名,没有定义,
2、这个函数是动态连接库导出的函数,而你没有连接它的lib库文件可以用“#pragma comment(lib, "那个库.lib")”编译命令或设置VC的lib文件路径。
按你所说的应该是自己写的函数,你确信你对这两个函数做了定义(而不是声明,也就是有这两个函数的实现代码)并包含了这个函数的头文件.
方便的话把与这个函数相关的代码贴出来吧
它是在连接的时候出现的,有两种可能:1、你写的这个函数只有省名,没有定义,
2、这个函数是动态连接库导出的函数,而你没有连接它的lib库文件可以用“#pragma comment(lib, "那个库.lib")”编译命令或设置VC的lib文件路径。
按你所说的应该是自己写的函数,你确信你对这两个函数做了定义(而不是声明,也就是有这两个函数的实现代码)并包含了这个函数的头文件.
方便的话把与这个函数相关的代码贴出来吧
展开全部
比如你在A.cpp里写了
int K_0(int* A,int B)
{
return *A+B;
}
在B.cpp里写了
int Input()
{
return (int)GetTickCount();
}
那么就在main.cpp里加入这两句:
int K_0(int* ,int);
int Input();
然后就可以调用了。
注意:告诉你的编译器,A.cpp和B.cpp参与编译,如果没有编译,那就在VC++工程设置里把“组件是排除文件”去掉。
int K_0(int* A,int B)
{
return *A+B;
}
在B.cpp里写了
int Input()
{
return (int)GetTickCount();
}
那么就在main.cpp里加入这两句:
int K_0(int* ,int);
int Input();
然后就可以调用了。
注意:告诉你的编译器,A.cpp和B.cpp参与编译,如果没有编译,那就在VC++工程设置里把“组件是排除文件”去掉。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
加个extern 试试
extern int K_0(int*,int);
extern int Input(void);
如果还不行,
确认一下是否另外的cpp也在工程里面,如果不在添加就是了
extern int K_0(int*,int);
extern int Input(void);
如果还不行,
确认一下是否另外的cpp也在工程里面,如果不在添加就是了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
何不弄个头文件,这个头文件包含 这两个函数的声明,然后在 cpp 里面包含那个头文件。
直接 include 那个 cpp 文件也可。
直接 include 那个 cpp 文件也可。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2020-06-07
展开全部
我的是重复声明函数导致的问题,
int xxx();
{
...
void DrawObject(CDC *pDC);
DrawObject();
...
}
int xxx();
{
...
void DrawObject(CDC *pDC);
DrawObject();
...
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询