社区应用 最新帖子 精华区 社区服务 会员列表 统计排行 道具中心
主题 : LNK2019。。
secondsen 离线
级别: 总版主
显示用户信息 
0  发表于: 2012-09-13   
来源于 通用编程 分类

LNK2019。。

项目 --> 属性 --> 链接器 -->  输入 --> 附近依赖项。。。这个的,不适用,应该。。。因为,都是我自己写的

struct _2nDs_Vector2D
{
    float x;
    float y;

    inline void Set(float fx, float fy);
    inline void Set(const _2nDs_Vector2D& vector);
........其他.....飘过.......
}

别的2nDs_Math.h
#include "Vector2D.h"
GLubyte isEdgeToEdgeIntersection(const _2nDs_Vector2D& A, const _2nDs_Vector2D& B, const _2nDs_Vector2D& C, const _2nDs_Vector2D& D, _2nDs_Vector2D* IntSecPoint);

2nDs_ Math.cpp

GLubyte isEdgeToEdgeIntersection(const _2nDs_Vector2D& A, const _2nDs_Vector2D& B, const _2nDs_Vector2D& C, const _2nDs_Vector2D& D, _2nDs_Vector2D* IntSecPoint)
{
.........
if (A.IsEqualTo(B)) IntSecPoint->Set(A);
.........
}



error LNK2019: unresolved external symbol "public: void __thiscall _2nDs_Vector2D::Set(struct _2nDs_Vector2D const &)" (?Set@_2nDs_Vector2D@@QAEXABU1@@Z) referenced in function "unsigned char __cdecl isEdgeToEdgeIntersection(struct _2nDs_Vector2D const &,struct _2nDs_Vector2D const &,struct _2nDs_Vector2D const &,struct _2nDs_Vector2D const &,struct _2nDs_Vector2D *)" (?isEdgeToEdgeIntersection@@YAEABU_2nDs_Vector2D@@000PAU1@@Z)    C:\Documents and Settings\secondsen\My Documents\Visual Studio 2010\Projects\2nDs_Engine\2nDs_Engine\2nDs_Maths.obj    2nDs_Engine

都是我自己写的,也包含了,LNK2019是怎么蹦出来的?


补充一下。。Set和IsEqualTo都报了LNK2019
评价一下你浏览此帖子的感受

精彩

感动

搞笑

开心

愤怒

无聊

灌水
我就是你们的神,庶民们,追随我吧!跟着我一起拖后腿!
拖后腿的人发勋章!
shawind 离线
级别: 分版主
显示用户信息 
1  发表于: 2012-09-13   
_2nDs_Vector2D这个struct只有定义,没有实现么?
え~え~お!!!
secondsen 离线
级别: 总版主
显示用户信息 
2  发表于: 2012-09-13   
有实现的,就是赋值 放在相应的cpp中,声明在.h中
我就是你们的神,庶民们,追随我吧!跟着我一起拖后腿!
拖后腿的人发勋章!
secondsen 离线
级别: 总版主
显示用户信息 
3  发表于: 2012-09-13   
2nDs_Vector2D.h

复制代码
  1. #ifndef _2nDs_VECTOR2D_H_
  2. #define _2nDs_VECTOR2D_H_
  3. #include "2nDs_System.h"
  4. struct _2nDs_Vector2D
  5. {
  6.     GLfloat x;
  7.     GLfloat y;
  8.     _2nDs_Vector2D(GLvoid):x(0), y(0){}
  9.     _2nDs_Vector2D(GLfloat value):x(value), y(value){}
  10.     _2nDs_Vector2D(GLfloat fx, GLfloat fy):x(fx), y(fy){}
  11.     _2nDs_Vector2D(const float* values):x((*values)), y((*values)+1){}
  12.     _2nDs_Vector2D(_2nDs_Vector2D& vector2D):x(vector2D.x), y(vector2D.y){}
  13.     inline GLvoid Set(GLfloat fx, GLfloat fy);
  14.     inline GLvoid Set(const _2nDs_Vector2D& vector);
  15.     inline GLvoid LoadIdentity(GLvoid);
  16.     inline GLvoid Normalize(GLvoid);
  17.     inline GLvoid RotateDeg(GLfloat angle);
  18.     inline GLvoid RotateRad(GLfloat angle);
  19.     inline GLvoid GetNormalized(_2nDs_Vector2D& vector) const;
  20.     inline GLvoid GetRotatedDeg(GLfloat angle, _2nDs_Vector2D& vector) const;
  21.     inline GLvoid GetRotatedRad(GLfloat angle, _2nDs_Vector2D& vector) const;
  22.     inline GLfloat GetLength() const;
  23.     inline GLfloat GetSquaredLength() const;
  24.     inline GLvoid Lerp(const _2nDs_Vector2D& src, GLfloat factor, _2nDs_Vector2D& dst);
  25.     inline GLvoid IsSumOf(const _2nDs_Vector2D& vector1, const _2nDs_Vector2D& vector2);
  26.     inline GLvoid IsDifferenceOf(const _2nDs_Vector2D& vector1, const _2nDs_Vector2D& vector2);
  27.     inline GLvoid IsProductOf(const _2nDs_Vector2D& vector1, const _2nDs_Vector2D& vector2);
  28.     inline GLvoid IsQuotientOf(const _2nDs_Vector2D& vector1, const _2nDs_Vector2D& vector2);
  29.     inline GLvoid IsSumOf(const _2nDs_Vector2D& vector, const GLfloat value);
  30.     inline GLvoid IsDifferenceOf(const _2nDs_Vector2D& vector, const GLfloat value);
  31.     inline GLvoid IsProductOf(const _2nDs_Vector2D& vector, const GLfloat value);
  32.     inline GLvoid IsQuotientOf(const _2nDs_Vector2D& vector, const GLfloat value);
  33.     inline GLvoid Plus(const _2nDs_Vector2D& vector);
  34.     inline GLvoid Subtract(const _2nDs_Vector2D& vector);
  35.     inline GLvoid Multiply(const _2nDs_Vector2D& vector);
  36.     inline GLvoid Divide(const _2nDs_Vector2D& vector);
  37.     inline GLvoid Plus(const GLfloat value);
  38.     inline GLvoid Subtract(const GLfloat value);
  39.     inline GLvoid Multiply(const GLfloat value);
  40.     inline GLvoid Divide(const GLfloat value);
  41.     inline GLvoid Invert(_2nDs_Vector2D& vector);
  42.     inline GLvoid Inverted(GLvoid);
  43.     inline GLfloat DotMultiply(const _2nDs_Vector2D& vector);
  44.     inline GLvoid CrossMultiply(const _2nDs_Vector2D& vector, _2nDs_Vector2D& Dst);
  45.     inline GLboolean IsEqualTo(const _2nDs_Vector2D& vector) const;
  46.     inline GLboolean IsUnequalTo(const _2nDs_Vector2D& vector) const;
  47. };
  48. #endif



2nDs_Vector2D.cpp

复制代码
  1. #include "2nDs_Vector2D.h"
  2. #include "2nDs_Maths.h"
  3. inline GLvoid _2nDs_Vector2D::Set(GLfloat fx, GLfloat fy) {x = fx; y = fy;}
  4. inline GLvoid _2nDs_Vector2D::Set(const _2nDs_Vector2D& vector) {x = vector.x; y = vector.y;}
  5. inline GLvoid _2nDs_Vector2D::LoadIdentity(GLvoid) {x = 0.0f; y = 0.0f;}
  6. inline GLvoid _2nDs_Vector2D::Normalize(GLvoid)
  7. {
  8.     GLfloat l = GetLength();
  9.     if(l == 1 || l == 0) return;
  10.     x /= l;
  11.     y /= l;
  12. }
  13. 。。。。。。其他。。。。
我就是你们的神,庶民们,追随我吧!跟着我一起拖后腿!
拖后腿的人发勋章!
shawind 离线
级别: 分版主
显示用户信息 
4  发表于: 2012-09-14   
看不出来有什么明显的问题,如果编译出的目标文件里确实是有2nDs_Vector2D.obj的话,我猜可能是你的项目工程组织结构的问题吧。

同等专业的程序员来解惑。
え~え~お!!!
secondsen 离线
级别: 总版主
显示用户信息 
5  发表于: 2012-09-14   
引用
引用第4楼shawind于2012-09-14 08:42发表的  :
我猜可能是你的项目工程组织结构的问题吧。




组织结构是指??包含来包含去的,弄得一团乱麻??
我就是你们的神,庶民们,追随我吧!跟着我一起拖后腿!
拖后腿的人发勋章!
shawind 离线
级别: 分版主
显示用户信息 
6  发表于: 2012-09-14   
引用
引用第5楼secondsen于2012-09-14 09:19发表的  :
组织结构是指??包含来包含去的,弄得一团乱麻??
.......


是的,比如说,链接的时候link.exe没找到2nDs_Vector2D.obj。又或者有什么预定义不小心把2nDs_Vector2D.cpp里的实现给忽略过去了。不过,直接用IDE管理的项目,一般是不会出这种问题的。
你以用 dumpbin /SYMBOLS 2nDs_Vector2D.obj > 2nDs_Vector2D.txt
然后打开2nDs_Vector2D.txt看看里面有没有set等方法的符号,
如果有,就是你的link.exe找不到2nDs_Vector2D.obj文件。
如果没有,就是你的具体实现根本没有被编译出来。
え~え~お!!!
secondsen 离线
级别: 总版主
显示用户信息 
7  发表于: 2012-09-14   
复制代码
  1. Microsoft (R) COFF/PE Dumper Version 10.00.30319.01
  2. Copyright (C) Microsoft Corporation.  All rights reserved.
  3. Dump of file 2nDs_Vector2D.obj
  4. File Type: COFF OBJECT
  5. COFF SYMBOL TABLE
  6. 000 00AB766F ABS    notype       Static       | @comp.id
  7. 001 00000001 ABS    notype       Static       | @feat.00
  8. 002 00000000 SECT1  notype       Static       | .drectve
  9.     Section length   41, #relocs    0, #linenums    0, checksum        0
  10.     Relocation CRC 00000000
  11. 005 00000000 SECT2  notype       Static       | .debug$S
  12.     Section length 1370, #relocs    0, #linenums    0, checksum        0
  13.     Relocation CRC 00000000
  14. 008 00000000 SECT3  notype       Static       | .debug$T
  15.     Section length   94, #relocs    0, #linenums    0, checksum        0
  16.     Relocation CRC 00000000
  17. String Table Size = 0x0 bytes
  18.   Summary
  19.         1370 .debug$S
  20.           94 .debug$T
  21.           41 .drectve



实现部分没有编译出来的意思??
我就是你们的神,庶民们,追随我吧!跟着我一起拖后腿!
拖后腿的人发勋章!
shawind 离线
级别: 分版主
显示用户信息 
8  发表于: 2012-09-15   
应该是这样了,从这个结果来看,2nDs_Vector2D.cpp的几乎像是空文件。
你查下,是不是有#define...这类的条件编译开关把具体代码给忽略过去了。
え~え~お!!!
secondsen 离线
级别: 总版主
显示用户信息 
9  发表于: 2012-09-16   
感觉 略 崩溃
我就是你们的神,庶民们,追随我吧!跟着我一起拖后腿!
拖后腿的人发勋章!
描述
快速回复

认证码:

验证问题:
12-5=?,答案:7 正确答案:7
按"Ctrl+Enter"直接提交