幻想森林

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 4922|回复: 17

[通用编程] LNK2019。。

[复制链接]

550

主题

9116

帖子

214748万

积分

超级版主

如同神一般的存在,腿神!拖后腿的神~~

Rank: 8Rank: 8

积分
2147483647
发表于 2012-9-13 12:32:29 | 显示全部楼层 |阅读模式
项目 --> 属性 --> 链接器 -->  输入 --> 附近依赖项。。。这个的,不适用,应该。。。因为,都是我自己写的

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
我就是你们的神,庶民们,追随我吧!跟着我一起拖后腿!
回复

使用道具 举报

136

主题

1751

帖子

548

积分

版主

Rank: 7Rank: 7Rank: 7

积分
548
发表于 2012-9-13 18:51:30 | 显示全部楼层
_2nDs_Vector2D这个struct只有定义,没有实现么?
え~え~お!!!
回复 支持 反对

使用道具 举报

550

主题

9116

帖子

214748万

积分

超级版主

如同神一般的存在,腿神!拖后腿的神~~

Rank: 8Rank: 8

积分
2147483647
 楼主| 发表于 2012-9-13 20:51:00 | 显示全部楼层
有实现的,就是赋值 放在相应的cpp中,声明在.h中
我就是你们的神,庶民们,追随我吧!跟着我一起拖后腿!
回复 支持 反对

使用道具 举报

550

主题

9116

帖子

214748万

积分

超级版主

如同神一般的存在,腿神!拖后腿的神~~

Rank: 8Rank: 8

积分
2147483647
 楼主| 发表于 2012-9-13 20:53:59 | 显示全部楼层
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. 。。。。。。其他。。。。
复制代码
我就是你们的神,庶民们,追随我吧!跟着我一起拖后腿!
回复 支持 反对

使用道具 举报

136

主题

1751

帖子

548

积分

版主

Rank: 7Rank: 7Rank: 7

积分
548
发表于 2012-9-14 08:42:58 | 显示全部楼层
看不出来有什么明显的问题,如果编译出的目标文件里确实是有2nDs_Vector2D.obj的话,我猜可能是你的项目工程组织结构的问题吧。

同等专业的程序员来解惑。
え~え~お!!!
回复 支持 反对

使用道具 举报

550

主题

9116

帖子

214748万

积分

超级版主

如同神一般的存在,腿神!拖后腿的神~~

Rank: 8Rank: 8

积分
2147483647
 楼主| 发表于 2012-9-14 09:19:40 | 显示全部楼层
引用第4楼shawind于2012-09-14 08:42发表的  :
我猜可能是你的项目工程组织结构的问题吧。



组织结构是指??包含来包含去的,弄得一团乱麻??
我就是你们的神,庶民们,追随我吧!跟着我一起拖后腿!
回复 支持 反对

使用道具 举报

136

主题

1751

帖子

548

积分

版主

Rank: 7Rank: 7Rank: 7

积分
548
发表于 2012-9-14 14:35:08 | 显示全部楼层
引用第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文件。
如果没有,就是你的具体实现根本没有被编译出来。
え~え~お!!!
回复 支持 反对

使用道具 举报

550

主题

9116

帖子

214748万

积分

超级版主

如同神一般的存在,腿神!拖后腿的神~~

Rank: 8Rank: 8

积分
2147483647
 楼主| 发表于 2012-9-14 23:27:25 | 显示全部楼层
  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
复制代码


实现部分没有编译出来的意思??
我就是你们的神,庶民们,追随我吧!跟着我一起拖后腿!
回复 支持 反对

使用道具 举报

136

主题

1751

帖子

548

积分

版主

Rank: 7Rank: 7Rank: 7

积分
548
发表于 2012-9-15 10:25:21 | 显示全部楼层
应该是这样了,从这个结果来看,2nDs_Vector2D.cpp的几乎像是空文件。
你查下,是不是有#define...这类的条件编译开关把具体代码给忽略过去了。
え~え~お!!!
回复 支持 反对

使用道具 举报

550

主题

9116

帖子

214748万

积分

超级版主

如同神一般的存在,腿神!拖后腿的神~~

Rank: 8Rank: 8

积分
2147483647
 楼主| 发表于 2012-9-16 18:17:35 | 显示全部楼层
感觉 略 崩溃
我就是你们的神,庶民们,追随我吧!跟着我一起拖后腿!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|幻想森林

GMT+8, 2024-3-29 20:00 , Processed in 0.039163 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表