0

我正在尝试从 main 方法上的函数传递对象引用。我认为问题出在那儿。

在java中我会做这样的事情:

Object obj;

theFunction(obj);

方法定义如下:

public void theFunction(Object obj) {
    obj.useMethod();
}

我在 C++ 上所做的是:

void theFunction(Object& obj){
    obj.useMethod();
}

根据我一直在阅读的有关该主题的内容,我认为这种方式是正确的。我正在使用visual studio 2013,它不会抱怨,只有当我编译时。错误信息如下:

1>------ Build started: Project: Radiosity, Configuration: Debug Win32 ------
1>  Source.cpp
1>Source.obj : error LNK2019: unresolved external symbol "public: void __thiscall    Keyboard::specialKeys(class Camera &)" (?specialKeys@Keyboard@@QAEXAAVCamera@@@Z)   referenced in function "void __cdecl display(void)" (?display@@YAXXZ)
1>C:\Users\PC\Documents\Visual Studio 2013\Projects\Radiosity\Debug\Radiosity.exe : fatal error LNK1120: 1 unresolved externals
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
4

2 回答 2

2

您遇到链接错误。

Keyboard::specialKeys()在您的代码中声明的某个地方。这意味着,您在编译代码时使用了正确的头文件。但是您没有链接到正确的库。

Keyboard::specialKeys()来自哪个库?您需要它来纠正程序的链接。

在 Visual Studio 中,右键单击您的项目并转到项目设置(或类似内容),然后

配置属性 -> 链接器 -> 输入 -> 附加依赖项

在此字段中添加正确的库文件。一个 .lib 文件对应于Keyboard::specialKeys()

于 2013-11-02T03:17:44.913 回答
0

我会仔细检查图书馆的链接。代码对我来说看起来不错。第一次开始使用 OpenGL 上下文时,我花了很长时间来设置它。

另请查看这些页面以了解具体错误:

http://msdn.microsoft.com/en-us/library/799kze2z.aspx

http://msdn.microsoft.com/en-us/library/z98k84c3.aspx

于 2013-11-02T03:21:43.443 回答