CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C语言

一个古怪的编译错误,请大家指点(LNK2001)

楼主hxhyby(贺小虎)2005-06-02 14:40:18 在 C/C++ / C语言 提问

小弟写了一个c程序,主函数在test.c里面,代码如下:  
  Test.c:  
  #include   "stdio.h"  
  #include   "dct.h"  
  main()  
  {  
            int16_t   p[4][4]   =   {......}  
            dct(p);  
            printf(.....);  
  }  
  dct.h文件如下:  
  void   dct(int16_t   d[4][4]);  
  dct.c文件如下:  
  #include   "dct.h"  
  void   dct(int16_t   d[4][4]);  
  {  
          ....;  
  }  
  问题点数:20、回复次数:15Top

1 楼goodboy1881(积木)(谁都别拦着我在水源升星)回复于 2005-06-02 14:45:21 得分 0

看起来应该是没有编译你的*.c文件  
  你编译的时候要编译所有的文件的Top

2 楼hxhyby(贺小虎)回复于 2005-06-02 14:49:04 得分 0

我是编译所有文件的,但是这个问题怎么解决呢  
  Top

3 楼goodboy1881(积木)(谁都别拦着我在水源升星)回复于 2005-06-02 14:50:57 得分 0

贴上来你的错误和你的出错代码,Top

4 楼hxhyby(贺小虎)回复于 2005-06-02 14:55:54 得分 0

error   LNK2001:unresolved   external   symbol   _WinMain@16Top

5 楼goodboy1881(积木)(谁都别拦着我在水源升星)回复于 2005-06-02 14:57:47 得分 0

终于贴出来了,你用的是什么编译器?你要编译的是windows程序  
   
  所以你需要用比较特殊的参数,如果在vc下面,在建立工程的时候不要建立控制台工程,  
  建立   win32   application   就好了。Top

6 楼hxhyby(贺小虎)回复于 2005-06-02 14:58:41 得分 0

fatal   error   LNK1120:1   unresolved   eexternalsTop

7 楼xzgyb(老达摩)回复于 2005-06-02 14:59:34 得分 0

void   dct(int16_t   d[4][4]);     //   这个怎么多了个分号,ha  
  {  
          ....;  
  }Top

8 楼hxhyby(贺小虎)回复于 2005-06-02 15:00:09 得分 0

我建的是   Empty   Win32   ApplicationTop

9 楼hxhyby(贺小虎)回复于 2005-06-02 15:02:04 得分 0

这个是打字的时候出错了,我觉得不应该是语法错误,是编译上的错误Top

10 楼hxhyby(贺小虎)回复于 2005-06-02 15:03:44 得分 0

以下是可能产生LNK2001错误的原因:  
   
    一.由于编码错误导致的LNK2001  
   
    1.不相匹配的程序代码或模块定义(.DEF)文件能导致LNK2001。例如,   如果在C++源文件内声明了一变量“var1”,却试图在另一文件内以变量“VAR1”访问该变量,将发生该错误。  
   
    2.如果使用的内联函数是在.CPP文件内定义的,而不是在头文件内定义将导致LNK2001错误。  
   
    3.调用函数时如果所用的参数类型同函数声明时的类型不符将会产生LNK2001。  
   
    4.试图从基类的构造函数或析构函数中调用虚拟函数时将会导致LNK2001。  
   
    5.要注意函数和变量的可公用性,只有全局变量、函数是可公用的。静态函数和静态变量具有相同的使用范围限制。当试图从文件外部访问任何没有在该文件内声明的静态变量时将导致编译错误或LNK2001。  
   
    函数内声明的变量(局部变量)   只能在该函数的范围内使用Top

11 楼goodboy1881(积木)(谁都别拦着我在水源升星)回复于 2005-06-02 15:05:27 得分 0

#include   "stdio.h"  
  #include   "dct.h"  
  main()  
  {  
            int16_t   p[4][4]   =   {......}  
            dct(p);  
            printf(.....);  
  }  
  w32   application应该使用   WinMain作主函数的-_-  
  控制台程序才应该用   main作主函数-_-  
  Top

12 楼hxhyby(贺小虎)回复于 2005-06-02 15:05:40 得分 0

但是我还是不知道怎么解决,被困了一天了Top

13 楼hxhyby(贺小虎)回复于 2005-06-02 15:09:01 得分 0

问题解决了,谢谢!!!怎么给分?Top

14 楼goodboy1881(积木)(谁都别拦着我在水源升星)回复于 2005-06-02 15:12:46 得分 20

帖子上面有一个管理的选项Top

15 楼hxhyby(贺小虎)回复于 2005-06-02 15:17:04 得分 0

搞定了,谢谢Top

相关问题

  • 一个古怪的编译错误,请各位大虾指点迷津
  • 最近怎么老是遇到稀奇古怪的编译问题,请高手们指点!!!!
  • 编译错误请高手指点
  • 编译出错,找不到预编译头,请指点
  • 哪个C++编译器能编译操作系统?请高手指点
  • 为什么编译一直出错?请指点
  • 编译通过,为什么生成EXE时出错!请指点
  • C程序编译错误,请指点迷津!
  • 请指点:vc6++如何编译dos程序啊
  • 请指点一下,为什么以下代码编译出错?

关键词

  • win32
  • 函数
  • 编译
  • 文件
  • application
  • lnk2001
  • 变量
  • dct
  • 错误
  • 导致

得分解答快速导航

  • 帖主:hxhyby
  • goodboy1881

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo