DLL问题

supwjhuLoveCjj 2003-11-21 11:01:20
我把一个C/S MFC程序(应该说是两个,一个Client,一个Server)改写成DLL.
Client有由MFCAppWizard[DLL],选择regular dll. 并包含 WinSocket.新建类CClientSocket继承自CSocket文件名为:RemoteControl
我怎么改写呀. 我把一些自己编写函数: USBConnectServer(char* IP),USBInitialize(BYTE),USBStart(BYTE),USBUpdate(//若干参数)要导出来USBStop(BYTE);导出来.我把他们写在RemoteControl类里面,但是无法使用导出关键字,写成全局的时候,
CClientSocket *m_pSocket; //
LPCTSTR m_strServerName;//
UINT m_nPort;//
extern "C" __declspec(dllexport) BYTE USBConnectServer(char *IP);
extern "C" __declspec(dllexport) BYTE USBInitialize();
..........
当我在Cliaent里面写函数虚函数virtual void OnReceive(int nErrorCode)的时候,build的时候就会出错:
RemoteControl.obj : error LNK2005: "class CClientSocket * m_pSocket" (?m_pSocket@@3PAVCClientSocket@@A) already defined in ClientSocket.obj
RemoteControl.obj : error LNK2005: "char const * const m_strServerName" (?m_strServerName@@3PBDB) already defined in ClientSocket.obj
RemoteControl.obj : error LNK2005: "unsigned int m_nPort" (?m_nPort@@3IA) already defined in ClientSocket.obj
ClientSocket.obj : error LNK2001: unresolved external symbol "public: virtual void __thiscall CClientSocket::OnReceive(int)" (?OnReceive@CClientSocket@@UAEXH@Z)
Debug/RemoteControl.dll : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.
不知何故.我想让各位高手帮忙看看这个到底怎么写.高位大侠多多帮忙
...全文
37 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
supwjhuLoveCjj 2003-11-24
  • 打赏
  • 举报
回复
呵呵,看来还是有人回答的,恩,我后来也是wangbab(bab)这样做的.不过感谢两位,过会儿散分.
说一句,看了一些VC里面的帖子感觉,VC里面高手实在不多,BCB里面高手很多很多,而且乐于助人,回答也是很得体. 呵呵.
beyondtkl 2003-11-22
  • 打赏
  • 举报
回复
先给你顶住
偶DLL不熟悉.等高手给你来解决.
supwjhuLoveCjj 2003-11-22
  • 打赏
  • 举报
回复
:(
supwjhuLoveCjj 2003-11-22
  • 打赏
  • 举报
回复
怎么样导出类中的函数
supwjhuLoveCjj 2003-11-22
  • 打赏
  • 举报
回复
高手进来看看呀
wangbab 2003-11-22
  • 打赏
  • 举报
回复
如果你单单到处类中的成员函数,
extern "C" __declspec(dllexport) int MyFunc(); //作为全局函数导出。
class MyClass{
...
friend MyFunc;
}
应该可以满足你的要求吧。
wangbab 2003-11-22
  • 打赏
  • 举报
回复
正规dll:不能导出C++类,只能导出C函数。但可以被其他语言调用。
扩展dll:可以导出C++类,但只能有C++调用。
导出类的方法。
dll中,类声明中添加AFX_EXT_CLASS,文件为MyClass.h
class AFX_EXT_CLASS MyClass:public CObject
{
...//类的定义。
}
///////////////////////////////////

exe中,需把dll的MyClass.h文件copy到exe的目录下,就可以和平时一样使用类了。
#include MyClass.h
在工程Project->Setting->link中添加MyClass.lib

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧