这是个什么错误?呵呵,一狠心
--------------------Configuration: SMS - Win32 Debug--------------------
Compiling...
OASMS.cpp
Linking...
OASMS.obj : error LNK2001: unresolved external symbol __imp__Login_R@8
OASMS.obj : error LNK2001: unresolved external symbol __imp__IFInitInterface@12
Debug/SMS.dll : fatal error LNK1120: 2 unresolved externals
Error executing link.exe.
SMS.dll - 3 error(s), 0 warning(s)
问题点数:100、回复次数:37Top
1 楼ququshb(忘求了)回复于 2002-04-10 13:06:13 得分 0
什么东东没有连接撒Top
2 楼nanjianhui(nan)回复于 2002-04-10 13:08:53 得分 0
你可能有静态库没有连接,这种问题我遇到过好多次。Top
3 楼frankyao(穿越无边)回复于 2002-04-10 13:11:03 得分 0
VC重新启动一次
你将debug目录中内容全部删除,再编译一次
应该就没有问题了Top
4 楼neulf(快乐程序员)回复于 2002-04-10 13:17:15 得分 0
的确有两个文件,一个是.dll文件,一个是.lib,别人给我的,我不知道怎么连接呀Top
5 楼gigi_andy(小猪)回复于 2002-04-10 13:21:03 得分 0
在project里的setting选项link页加载library modules即可Top
6 楼neulf(快乐程序员)回复于 2002-04-10 13:21:14 得分 0
错了,应该说连接了,但是总是连接不对Top
7 楼solar(天哪,忘了我是什么时候注册的了!)(int argc, char *argv[])回复于 2002-04-10 13:22:11 得分 0
Project->Settings->Link->Object/lib Modules 加上你的.obj或.lib文件名,再Tools->opttions->directories->lib directoris 加上路径即可Top
8 楼zaozi(枣子)回复于 2002-04-10 13:26:53 得分 0
有几种可能:
一:你程序的哪个函数文件名子打错了!使连接不上!
二:debug目录里面的文件属性为只读,你可以将他们都删了或者将属性改了
三:你的sms.dll文件没有在debug目录里,你可以将它拷贝到debug目录里面和主程序的.exe文件在一起
Top
9 楼neulf(快乐程序员)回复于 2002-04-10 13:27:50 得分 0
在project里的setting选项link页加载library modules即可
我将路经都加上了C:\WINNT\system32\sms\SMEIDll.lib
不知道为什么还找不到Top
10 楼feifei2001(鼠标)回复于 2002-04-10 13:31:25 得分 0
这个问题我知道,你的工程项目里面少文件了。就是要用到的函数的文件。
你好好看看。Top
11 楼feifei2001(鼠标)回复于 2002-04-10 13:34:18 得分 0
还应该有一个动态库的头文件吧。把它加到工程里就 Ok 了。Top
12 楼neulf(快乐程序员)回复于 2002-04-10 13:39:53 得分 0
二:debug目录里面的文件属性为只读,你可以将他们都删了或者将属性改了
三:你的sms.dll文件没有在debug目录里,你可以将它拷贝到debug目录里面和主程序的.exe文件在一起
这两个问题都已经解决,可是~~~难道写错了名字?我怎么知道是否写错了呢?好像我是按照使用说明写的,能否找到dll中的名字?Top
13 楼zaozi(枣子)回复于 2002-04-10 13:40:41 得分 0
对了,你的程序中用到自己写*.dll了吗?Top
14 楼neulf(快乐程序员)回复于 2002-04-10 13:42:55 得分 0
动态库的头文件我没有哇,我自己加了extern "C" __declspec(dllimport ) ……
不知道行不行?Top
15 楼zaozi(枣子)回复于 2002-04-10 13:43:59 得分 0
那个sms.dll是你自己编的吗,如果是系统的话,你就要把sms.lib加到编译的装入库里啊!就是在link页里面的那个!Top
16 楼delphihero(何去何从)回复于 2002-04-10 13:46:05 得分 0
把 .dll和 lib 考到debug 目录,和程序目录。
project->setting->link 里面加入 *.lib文件
或者 #pragma comment(lib,"*.lib")在文件Top
17 楼neulf(快乐程序员)回复于 2002-04-10 14:39:23 得分 0
好像都已经做了,还是不行呀Top
18 楼ericzhangali(另一个空间)回复于 2002-04-10 14:48:24 得分 10
http://www.csdn.net/expert/topic/634/634410.xml?temp=.3623468Top
19 楼lanfan(蓝色的帆)回复于 2002-04-10 14:49:48 得分 10
直接将dll加到头文件里算了,importTop
20 楼zxs218(Frank Zhou)回复于 2002-04-10 14:54:28 得分 0
将OASMS.cpp的文件名改成OASMS.c再编译试试Top
21 楼maoqingfeng(千里孤坟)回复于 2002-04-10 14:55:10 得分 0
csdn真是没天理,我的问题和他一样,为什么这儿那么多人,我那就没人。就因为分少吗Top
22 楼neulf(快乐程序员)回复于 2002-04-10 14:56:16 得分 0
直接将dll加到头文件里算了,import
怎么import?Top
23 楼zxs218(Frank Zhou)回复于 2002-04-10 15:02:23 得分 10
C++和C生成的动态连接库的符号表达是不一样的,如果你的库是用C的方法连接的,在C++环境下连接就会出错。
你应该试试:
将OASMS.cpp的文件名改成OASMS.c再编译。
Top
24 楼neulf(快乐程序员)回复于 2002-04-10 15:08:16 得分 0
to zxs218(Frank Zhou):
是呀,可能是个C的库,我怎么在C++的环境下能用呢?谢谢你了Top
25 楼zxs218(Frank Zhou)回复于 2002-04-10 15:22:20 得分 10
在你用的动态连接库头文件中使用
extern "C" {
}
将所用的声明包含其中。Top
26 楼neulf(快乐程序员)回复于 2002-04-10 15:31:28 得分 0
你的意思是类似这样吗?
extern "C" __declspec(dllimport ) BOOL WINAPI IFInitInterface(DWORD dwCodeProtocol, DWORD dwDriverProtocol, LPCTSTR pDriverParam);
我加了呀Top
27 楼zxs218(Frank Zhou)回复于 2002-04-10 15:39:12 得分 10
__declspec(dllimport )
把它去掉在试试看。Top
28 楼neulf(快乐程序员)回复于 2002-04-10 15:47:41 得分 0
还是不对Top
29 楼neulf(快乐程序员)回复于 2002-04-10 15:50:24 得分 0
唉,痛苦Top
30 楼zxs218(Frank Zhou)回复于 2002-04-10 15:53:07 得分 10
现在的错误和刚才一样吗?
实在不行,你把extern "C" 再去掉。Top
31 楼neulf(快乐程序员)回复于 2002-04-10 16:02:36 得分 0
错误一样,对了,我加入这条语句还需要一个与.dll对应的.h文件吗?因为我已经知道方法了,不需要了吧Top
32 楼neulf(快乐程序员)回复于 2002-04-10 16:18:50 得分 0
我好痛苦呀,兄弟们Top
33 楼neulf(快乐程序员)回复于 2002-04-10 16:31:56 得分 0
兄弟们救命呀,都急着回家么?Top
34 楼zaozi(枣子)回复于 2002-04-10 17:11:11 得分 10
你把代码发给我一份,我调试看看!Top
35 楼zaozi(枣子)回复于 2002-04-10 17:23:25 得分 10
对了,给你我的信箱:wutao8@263.netTop
36 楼neulf(快乐程序员)回复于 2002-04-11 10:34:22 得分 0
已经解决了,呵呵,谢谢大家了Top
37 楼zaozi(枣子)回复于 2002-04-11 16:38:56 得分 10
那要给分啊Top
38 楼zaozi(枣子)回复于 2002-04-11 19:16:14 得分 10
你不是是一狠心......吗?
怎么,不给分的吗?Top





