怎么回事?????在线等待
自己的Dll,
定义了头文件 my.h
#define DllExport __declspec(dllexport)
#define DllImport __declspec(dllimport)
#ifdef __NETCOMMDLL_IMPLEMENTATION__
#define DllFunction DllExport
#else
#define DllFunction DllImport
#endif
对话框中使用此my.h中的DLL输出函数
但是在编译出错如下:
Linking...
RTDB.obj : error LNK2001: unresolved external symbol __imp__BeginWaitForConnect
Debug/RTDB.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.
不知是什么错误,怎么解决????
问题点数:100、回复次数:14Top
1 楼rtdb(东临碣石)回复于 2003-01-02 11:29:32 得分 0
你用了__imp__BeginWaitForConnect这个函数,
但没有LINK它的库。Top
2 楼rtdb(东临碣石)回复于 2003-01-02 11:30:45 得分 0
你用了__imp__BeginWaitForConnect这个函数,
但没有LINK它的库。Top
3 楼athunwer(断点)回复于 2003-01-02 11:34:00 得分 0
如何连接;
我已设置 Link中的参数了,包含了所需的lib;
还需要走什么?Top
4 楼rtdb(东临碣石)回复于 2003-01-02 12:05:05 得分 25
给的错误信息就是说在你给的库中找不到__imp__BeginWaitForConnect。
这不象是标准库函数, 是你们自己或是第三方的。
而且只有这一个, 也许是头文件和库不匹配。Top
5 楼athunwer(断点)回复于 2003-01-02 12:23:44 得分 0
自定义的库函数
#ifndef __NETCOMM_H__
#define __NETCOMM_H__
// Public interface file.
#ifndef _WINDOWS_
#include <windows.h>
#endif
typedef unsigned short u_short;
#ifdef __cplusplus
extern "C" {
#endif
#define DllExport __declspec(dllexport)
#define DllImport __declspec(dllimport)
#ifdef __NETCOMMDLL_IMPLEMENTATION__
#define DllFunction DllExport
#else
#define DllFunction DllImport
#endif
#define UDP_REPETITIONTIME 10
#define UDP_UNITLENGTH (512-sizeof(DWORD))
#define TCP_UNITLENGTH (1024*sizeof(DWOR))
DllFunction DWORD BeginWaitForConnect(HWND hWindow,UINT nMsg,DWORD *pdwId);
DllFunction void ErrorLog(WPARAM subsystemId) ;
#ifdef __cplusplus
}
#endif
#endif
Top
6 楼prglib(多多)回复于 2003-01-02 15:40:31 得分 25
可能是你的函数BeginWaitForConnect在编译后被改名了你可以在自定义函数库的netcom.def文件中强制输出BeginWaitForConnect,而且好像你的库函数不是用vc编译的,如果不是,最好用vc编译一下。Top
7 楼In355Hz(好象一条狗)回复于 2003-01-02 16:52:34 得分 0
__NETCOMMDLL_IMPLEMENTATION__ 是否在编译时定义?
DllFunction DWORD BeginWaitForConnect(HWND hWindow, UINT nMsg, DWORD *pdwId);
在 .cpp 的实现中,该函数的定义是否和头文件一支?Top
8 楼athunwer(断点)回复于 2003-01-02 17:21:45 得分 0
Dll中使用的头文件和应用对话框中使用的是同一个头文件,
dll的实现文件中定义了__NETCOMMDLL_IMPLEMENTATION__
在使用隐式调用时出现此错误,但是在显式(GetProcAddress)调用时无错,Top
9 楼In355Hz(好象一条狗)回复于 2003-01-02 17:34:43 得分 25
奇怪,隐式调用时 DLL 的 .lib 文件包含到工程里了吧?Top
10 楼athunwer(断点)回复于 2003-01-02 17:35:34 得分 0
to: In355Hz
DllFunction DWORD BeginWaitForConnect(HWND hWindow, UINT nMsg, DWORD *pdwId);
在 .cpp 的实现中,该函数的定义是否和头文件一支?
如果不一直,此Dll库不能build!
而我得dll已经编译成功,显式调用无误
Top
11 楼athunwer(断点)回复于 2003-01-02 17:44:22 得分 0
to: In355Hz
偶是初学者,
偶在Link中Object/Library Modules中设置了要包含的.lib和对应的路径。
不知道是否算把dll包含进工程中了
如果没有的话,还要做些什么?
我只看了几个例子,没找到好的教材系统的学习Top
12 楼athunwer(断点)回复于 2003-01-02 18:58:19 得分 0
谁帮我???Top
13 楼ruihuahan(飞不起来的笨鸟)回复于 2003-01-03 11:26:56 得分 25
好像是函数名称修饰的问题。
调用时用的是extern "C",而编译.dll是用的是C++编译。
所以会出现文件名称的不匹配。Top
14 楼athunwer(断点)回复于 2003-01-03 12:57:13 得分 0
算了,看来大家都没碰到这种问题,可能我写的代码有问题!
散分,见着有份!Top




