我要发帖 回复

正式会员

4

主题

31

积分

0

专家分

:

私信
发表时间 : 2008-5-26 00:50:03 | 浏览 : 1671    评论 : 5
本问题有源代码,请先编译ObjectDLL,也就是下文中的A,然后拷贝DLL到 3D\Debug下 与 Material\Debug下,这两个工程分别慰问中所述 B C,

工程在VC6.0下编译,请打开 3D/3D.dsw


我做了一个DLL程序A,另外两个程序B和C使用A.lib 使用其中的 A.dll

但是在生成 B 的过程 有下面这段话,可是我并没有要求B生成 B.lib 啊?
他为什么会这样呢?
Creating library Debug/B.lib and object Debug/B.exp


另外,C能够没有毛病的使用A.lib 和 A.dll ,但是,B却不行了,B中在使用一个类的方式的时候提示
error LNK2001: unresolved external symbol "public: void __thiscall Element::DrawSelf(unsigned int)"

A 中也使用到了 Element(基类)的这个方法(在子类中没有重载),能够用,B也要使用却不行啊?

大家要是有兴趣可以看看我的代码

上面的 A B C 实际项目中的名称
A ==  OBjectDLL
B ==  3D
C ==  Material

error LNK2001: unresolved external symbol "public: void __thiscall Element::DrawSelf(unsigned int)"
这个问题出现在 Material 工程下的COpenGL的RenderGLScene中,我声明了一个 Sample(Element的子类) s ,在一个for循环中调用 s.DrawSelf() 就出现了这个错误


但是在 3D 这个工程中 Scence这个类(OBjectDLL包括) 这其中夜钓用了 Element.DrawSelf() 却能正常运行,

这时为什么呢?

BTW:: 我没有将 Element 导出,是不是这个问题呢?在同样没有到处的情况下,3D能用 Material却不能用
哎。。。。。

[ 本帖最后由 Eniak 于 2008-5-26 12:55 AM 编辑 ]

3D.rar

336.96 KB, 下载次数: 45

最近VR访客

tan_dunming 评论于2008-5-26 09:09:44
1.有几个语法错误 MatiarialDlg.cpp
原本:ObjectMaterial* o = this->_matmng->getActiveSample();
改为:ObjectMaterial* o = (ObjectMaterial*)this->_matmng->getActiveSample();
否则编译的时候自然无法通过了

2.Element.h中要把类Element导出啊 漏了“ObjectDLL_API ”
原本:class Element : public object
改为:class ObjectDLL_API Element : public object
所以有了你提到的“B中在使用一个类的方式的时候提示
error LNK2001: unresolved external symbol "public: void __thiscall Element::DrawSelf(unsigned int)" ”
3D没有用到DrawSelf所以能用,而Matierial用到了所以编译无法通过
追求卓越
Eniak 评论于2008-5-26 14:32:08
你说的那个 ObjectDLL_API  我昨天也注意到了,但是为什么3D为什么可以用呢?

还有为什么 Material 会生成一个 *.lib 呢?
tan_dunming 评论于2008-5-26 23:05:53
这个正常 它是否生成无关紧要
追求卓越
Eniak 评论于2008-5-27 21:20:58
在问两个问题,
1  怎么能让程序到指定的路径加载 DLL 呢,我发现每次拷贝粘贴都很不爽的

2 还有,就是我每次运行Material.exe 时候,发现总是有点不对劲,就是刷新的地方面,还有,就是点击下面的三个 Abienmt Diffuse Specular 这三个按钮时,应该探出一个对话框 CColorDialog, 但是这个对话框总是被遮挡住了,每次要按一下 Alt 才能出来,这是问什么呢?
tan_dunming 评论于2008-5-29 22:41:44
工程设置属性看
追求卓越

手机版|VR开发网 统计 津ICP备18009691号
网安备12019202000257

GMT+8, 2021-6-16 06:26 PM

返回顶部