博文

VC中的error LNK2001: unresolved external s(2013-05-01 14:41:00)

摘要: VC中的error LNK2001: unresolved external symbol _main的解决办法   自己在vc中编了个小程序,然后把程序#if 0  #endif  掉后,编译,链接时老是提示如下:       Linking...
      LIBCD.lib(crt0.obj) : error LNK2001: unresolved
external symbol _main
      Debug/Point.exe : fatal error LNK1120: 1
unresolved externals
      Error executing link.exe.       Point.exe - 2 error(s), 0 warning(s)
  难过啊,为什么??
  有人说:看上去,你应该是建立了一个控制台工程,但是你没有定义main函数,所以会出现这样的错误。写个main函数。 有人说:   要修改[Project] --> [Settings] -->
选择"Link"属性页,在Project
Options中将/subsystem:console改成/subsystem:windows  ,我改了之后就成以下这样的错误了
  Linking...
     
LIBCD.lib(wincrt0.obj) : error LNK2001: unresolved external symbol _W......

阅读全文(1011) | 评论:1 | 复制链接

线程同步能避免出现“race conditions”(竞争条件)和“data c(2013-01-26 09:24:00)

摘要: 线程同步能避免出现“race conditions”(竞争条件)和“data corruption”(数据破坏)的情况。
同步(synchronous)与异步(asynchronous)的定义: 当程序1调用程序2时,程序1停下不动,直到程序2完成回到程序1来,程序1才继续下去,这就是“同步”。
如果程序1调用程序2后,径自继续自己的下一个动作,那么两者之间就是“异步”。
Win32 API 中的SendMessage()是同步行为,而PostMessage()是异步行为。
win32中关于进程和线程的协调工作是由同步机制来完成的。同步机制相当于线程之间的红绿灯。 -----Critical Sections(关键区域、临界区域)
win32中最容易使用的同步机制就是critical sections.所谓critical sections意指一小块“用来处理一份被共享之资源 ”的程序代码。这里的资源并不是来着.RES的Windows资源,而是广义地指一块内存、一个数据结构、一个文件,或任何其 他具有“使用之排他性”的东西。
为了防止问题的发生,一次只能有一个线程获准进入critical section中。实施的方式就是在程序中加上“进入”或“离 开”critical section的操作。 在win32中可以为一个需要保护的资源声明一个CRITICAL_SECTION类型的变量。这个变量扮演红绿灯的角色。 Critical section 并不是核心对象,没有handle这样的东西,它和核心对象不同,不存在进程的内存空间。你应该将一个 类型为CRITICAL_SECTION的局部变量初始化,方法是调用InitializeCriticalSection();
VOID InitializeCriticalSection(
  LPCRITICAL_SECTION lpCriticalSection  // critical section 一个指针,指向欲初始化的CRITICAL_SECTION变量
); ......

阅读全文(2616) | 评论:1 | 复制链接

error lnk2019 __tmainCRTStartup(2012-02-01 17:38:00)

摘要: 不显示删除回复显示所有回复显示星级回复显示得分回复 error LNK2019: 无法解析的外部符号 _main,该符号在函数 ___tmainCRTStartup 中被引用 LIBCMT.lib [问题点数:50分,结帖人:honghaixiao] honghaixiao 等 级: 结帖率:75.00% 楼主发表于:2008-09-06 15:15:43 错误 1 error LNK2019: 无法解析的外部符号 _main,该符号在函数 ___tmainCRTStartup 中被引用 LIBCMT.lib
这个错误怎么解决


在VS2005 下写DX的骨骼动画时遇到这个错误

class CAllocateHierarchy :public ID3DXAllocateHierarchy{}主要是继承了ID3DXAllocateHierarchy

在头文件中包含了
#include "d3dx9.h"
#include "D3dx9anim.h"

包含库文件dxguid.lib d3dx9d.lib d3d9.lib winmm.lib
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP 回复次数:8 zzz822163 (.) 等 级: #1楼 得分:10回复于:2008-09-08 12:50:45 首先要看看工程建对了么,应该是win32 application


老版本MFC升级到现在版本VS2005的时候你的工程不再适合现在的程序!!

还有就是 入口函数选项要正确~~
还有就是没有链接到正确的库 对我有用[0] 丢个板砖[0......

阅读全文(2542) | 评论:0 | 复制链接

C/C++语法知识:typedef struct 用法详解(2011-07-16 15:55:00)

摘要:第一篇:typedef struct与struct的区别 1. 基本解释 typedef为C语言的关键字,作用是为一种数据类型定义一个新名字。这里的数据类型包括内部数据类型(int,char等)和自定义的数据类型(struct等)。 在编程中使用typedef目的一般有两个,一个是给变量一个易记且意义明确的新名字,另一个是简化一些比较复杂的类型声明。 至于typedef有什么微妙之处,请你接着看下面对几个问题的具体阐述。 2. typedef & 结构的问题 当用下面的代码定义一个结构时,编译器报了一个错误,为什么呢?莫非C语言不允许在结构中包含指向它自己的指针吗?请你先猜想一下,然后看下文说明: typedef struct tagNode
{
 char *pItem;
 pNode pNext;
} *pNode; 答案与分析: 1、typedef的最简单使用 typedef long byte_4; 给已知数据类型long起个新名字,叫byte_4。 2、 typedef与结构结合使用 typedef struct tagMyStruct
{
 int iNum;
 long lLength;
} MyStruct; 这语句实际上完成两个操作: 1) 定义一个新的结构类型 struct tagMyStruct
{
 int iNum;
 long lLength;
}; 分析:tagMyStruct称为“tag”,即“标签”,实际上是一个临时名字,struct 关键字和tagMyStruct一起,构成了这个结构类型,不论是否有typedef,这个结构都存在。 我们可以用struct tagMyStruct varName来定义变量,但要注意,使用tagMyStruct varName来定义变量是不对的,因为struct 和tagMyStruct合在一起才能表示一个结构类型。 2) typedef为这个新的结构起了一个名字,叫MyStruct。 typedef struct tagMyStruct MyStruct; 因此,My......

阅读全文(1900) | 评论:0 | 复制链接

C++——头文件的作用(2010-11-05 23:24:00)

摘要:头文件 每个C++/C程序通常分为两个文件。一个文件用于保存程序的声明(declaration),称为头文件。另一个文件用于保存程序的实现(implementation),称为定义(definition)文件。
C++/C程序的头文件以“.h”为后缀,C程序的定义文件以“.c”为后缀,C++程序的定义文件通常以“.cpp”为后缀(也有一些系统以“.cc”或“.cxx”为后缀)。 1.1 版权和版本的声明
版权和版本的声明位于头文件和定义文件的开头(参见示例1-1),主要内容有:
(1)版权信息。
(2)文件名称,标识符,摘要。
(3)当前版本号,作者/修改者,完成日期。
(4)版本历史信息。
/*
* Copyright (c) 2001,老妖工作室
* All rights reserved.
*
* 文件名称:filename.h
* 文件标识:见配置管理计划书
* 摘    要:简要描述本文件的内容
*
* 当前版本:1.1
* 作    者:输入作者(或修改者)名字
* 完成日期:2001年7月20日
*
* 取代版本:1.0
* 原作者  :输入原作者(或修改者)名字
* 完成日期:2001年5月10日
*/ 示例1-1 版权和版本的声明 1.2 头文件的结构
头文件由三部分内容组成:
(1)头文件开头处的版权和版本声明(参见示例1-1)。
(2)预处理块。
(3)函数和类结构声明等。
假设头文件名称为 graphics.h,头文件的结构参见示例1-2。
【规则1-2-1】为了防止头文件被重复引用,应当用ifndef/define/endif结构产生预处理块。
【规则1-2-2】用 #include <filename.h> 格式来引用标准库的头文件(编译器将从标准......

阅读全文(6881) | 评论:1 | 复制链接

c++ obj文件与exe文件的区别(2010-11-04 14:38:00)

摘要:编译:当前源代码编译成二进制目标文件(.obj文件) 链接(link):将生成的.obj文件与库文件.lib等文件链接,生成可执行文件(.exe文件)。 一个现代编译器的主要工作流程如下: 源程序(source code)→预处理器(preprocessor)→编译器(compiler)→汇编程序(assembler)→目标程序(object code)→连接器(链接器,Linker)→可执行程序(executables)......

阅读全文(3534) | 评论:0 | 复制链接

学习c++的心得(2010-11-03 23:00:00)

摘要:我从去年11月份开始自学C++(本人现在做C#开发),现在把我这10来个月学习体会写
出来和大家分享。

1。关于要不要学习C++?(结论:要学,一定要学!)
如今在网上很多为要不要学C++争的不可开交,因为现在JAVA,C#,。NET都炒的很火,特
别是JAVA,大有炸平庐山,停止地球转动之势。用林锐同志的话说,其实JAVA只是C++外甥
,跑到舅舅身上撒了一泡尿而已。首先,我们从JAVA 的来历上来说,JAVA的设计初衷是用
来给家用电器设计程序使用的,最初设计者想用C++,但觉得C++太复杂,就在C++的基础上
做了一些简化,设计出了JAVA,它的设计思想是跨平台,所以必须先在运行平台上安装虚
拟机,然后把源程序编译成中间语言在运行。这是一个优点,但我们说任意优点都是建立
在缺点上的,JAVA的缺点就是运行速度慢,这对于某些系统来说是致命弱点。况且,JAVA
中没有指针,对于制作系统软件来说,这更是无法饶恕的。再来看C++。C++产生于美国贝
尔实验室,就是发明电话那个公司。设计初衷是用来改进C的开发效率,C是面向过程的语
言,开发效率底,贝尔实验室有大量的C程序员,所以只要在开发效率上提高一点点,就可
以节约数目庞大的成本。C是什么东西?是用来代替汇编编写操作系统的语言,用C++代替
C,可以得出两个结论:第一,C++必须具有同C相当的执行速度;第二,C++必须比C具有较
高的开发效率。执行速度方面,C++的设计者的思想就是在改进开发效率的同时尽量不增加C++的系统开销,当然有些地方非增加开销不可,也把开销控制在
最小程度内。具非权威研究报告,C++比C的执行开销多出不到10%。开发效率方面,C++引
进了面向对象机制,库机制,最大程度上实现了代码重用,这是软件开发人员的福音。C+
+在改进C的开发效率的同时,对C的缺陷做了一些修补。C的优点在C++中都得到了很好的保
留,C的缺点在C++中都有了改进,有了更好的解决办法。而且,为了现有的大量C程序维护
,C++还全面兼......

阅读全文(5937) | 评论:10 | 复制链接

C++优秀经典教程推荐(2010-11-03 22:57:00)

摘要:写程序已经快两年了,学习C++,也一年有余了,除了感谢把我领进门的温文尔雅的孙毅师傅,还要感谢给了我无穷视界的几本C++经典。不过,还要感谢的一个人是一个内心卑微但又十分自我的苏林,他使我记住了耻辱。知耻而后勇嘛! 1. C++ Primer,                  难度系数 0.2, 推荐指数 0.7 2. Effective C++,               难度系数 0.5, 推荐指数 0.9 3. More Effective C++,          难度系数 0.7, 推荐指数 0.9 4. Inside the c++ object model, 难度系数 0.8, 推荐指数 0.7 一年前,对于C++,我几乎还是一窍不通,至少可以说是个十分标准的门外汉。那个时候我连基本的,成员初始化列表,都不知道是什么意思,最害怕的就是听到别人和我提起对象,多态什么的,现在想起来,不免心有余悸,背若芒刺啊。 不管如何,还是应该先表扬一下C++ Primer这本书,它似乎也一直被奉为C++中最为经典的启蒙教程,几乎任何一个学习C++的人,都曾经看过,或者应该看看这本独一无二的基础教程,我也未能例外。它几乎囊括了C++中所有的知识体系,对C++的基本语意给与了全面的阐述,所以这本书如果全部一字不漏的看一遍的话,恐怕也是要有非凡耐心的。C++ Primer应该比作C++的小学课本,但这并不能说明本书作者Stanley B Lippman是个只会交小学的平庸之辈,一般来说大师都是能够化繁为简、深入浅出的。 接触Effective C++只在半年前,花了接近2周的时间,突击看了几遍,虽然没有立即达到融会贯通的意境,但还是品味出了C++令人陶醉的......

阅读全文(4656) | 评论:1 | 复制链接

如何学好C++(网络文摘)(2010-11-03 22:08:00)

摘要:        1.把C++当成一门新的语言学习(和C没啥关系!真的。);
  2.看《Thinking In C++》,不要看《C++变成死相》;   3.看《The C++ Programming Language》和《Inside The C++ Object Model》,不要因为他们很难 而我们自己是初学者所以就不看;   4.不要被VC、BCB、BC、MC、TC等词汇所迷惑——他们都是集成开发环境,而我们要学的是一门语 言; 
       5.不要放过任何一个看上去很简单的小编程问题——他们往往并不那么简单,或者可以引伸出很多 知识点;   6.会用Visual C++,并不说明你会C++;   7.学class并不难,template、STL、generic programming也不过如此——难的是长期坚持实践和 不遗余力的博览群书;   8.如果不是天才的话,想学编程就不要想玩游戏——你以为你做到了,其实你的C++水平并没有和 你通关的能力一起变高——其实可以时刻记住:学C++是为了编游戏的;   9.看Visual C++的书,是学不了C++语言的;   10.浮躁的人容易说:XX语言不行了,应该学YY;——是你自己不行了吧!?   11.浮躁的人容易问:我到底该学什么;——别问,学就对了;   12.浮躁的人容易问:XX有钱途吗;——建议你去抢银行;   13.浮躁的人容易说:我要中文版!我英文不行!——不行?学呀!   14.浮躁的人容易问:XX和YY哪个好;——告诉你吧,都好——只要你学就行;   15.浮躁的人分两种:a)只观望而不学的人;b)只学而不坚持的人;   16.把时髦的技术挂在嘴边,还不如把过时的技术记在心里;   17.C++不仅仅是支持面向对象的程序设计语言;   18.学习编程最好的方法之一就是阅读源代码;   19.在任何时刻都不要认为自己手中的书已经足够了;   20.请阅读《The Standard C++ Bible》(中文版:标准C++宝典)......

阅读全文(2322) | 评论:0 | 复制链接

c++ 教程推荐(2010-11-03 22:04:00)

摘要: 推荐C++教程 1. <<The C++ Programming Language>> , Bjarne Stroustrup 
这是一本每个人都应该买但不一定要看的书,强烈建议初学者不要看这本书,否则可能会一头雾水,失去信心,BS写书本来就不怎么样,他自己都说他的书有些晦涩难懂,但是买一本放在书柜里,有什么不清楚的地方查查高人如何解析还是有必要的。中文版是裘老师翻译的,以裘老师的深厚功力,技术上大家大可放心,但语言流畅上我就不敢认同了,况且这还是一本大书,如果要追求语言流畅的话,可能没有两3年是出不来的,而且国内的出版社又那么急功近利,稿酬不高,做得那么好有必要吗? 2. <<C++ Primer>> , lippman? 
lippman的地位自然不用猜疑,此书也被评为C++的最佳入门书籍,也是Lipman写得最认真的一本书,第3版在国内98年就有了。全书可谓是C++大全,深度适当,比较适合初学者,或者想对C++和程序设计有大概了解的读者, 但就是比较厚,这也只能怪C++的源远流长,总是在打园场,不断增加新特性,让我们这群读者都不得不捧着这本大书品读。中文版是潘老师翻译的,文字通顺,但缺乏味道,看着一本千来页的书,而且前面一部分讲的都是程序设计思想,容易令人产生困倦,也难怪很多人半道出家学java。 

3. <<effective C++ >> Scott meyer 同下 4. <<more effective C++>> , meyer 
阅读全文(1917) | 评论:0 | 复制链接