为什么我不能用winsock下的WSASocket()函数?

hecrics 2002-08-27 11:18:09
加精
在用WSASocket()函数时老是出这样的错误:
[Linker Error] Unresolved external 'WSACreateEvent' referenced from D:\PROGRAM FILES\BORLAND\CBUILDER5\PROJECTS\SERVER\MAINPROC.OBJ
我已经用了#include <winsock2.h> 啊
但是有些以WSA开头的函数能用,有些不能用
如:WSAStartup()能用,而WSASocket(),WSACreateEvent()等不能用
这是为什么呢?
...全文
94 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
hzhxxx 2002-08-27
  • 打赏
  • 举报
回复
C 的庞大也是一个难题啊!

不知道 linux 下的 C 有改进没有!
gfh21cn 2002-08-27
  • 打赏
  • 举报
回复
to jishiping(JSP 季世平)

可不可以直接用OBJ文件呢
如USEOBJ();
kingcaiyao 2002-08-27
  • 打赏
  • 举报
回复
对不起,上面的贴子回复错了。
jishiping 2002-08-27
  • 打赏
  • 举报
回复
在你的Project里加上ws2_32.lib就可以了。也就是在主程序里:
//......
USELIB("ws2_32.lib");
//--------------------------------------------------------------
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
//........
}
lj_csdn 2002-08-27
  • 打赏
  • 举报
回复
好像是builder的lib里没有。
implib ws2_32.lib c:\winnt\system32\ws2_32.dll
或者 implib ws2_32.lib c:\windows\system32\ws2_32.dll
再在你的工程里加入ws2_32.lib
另外头文件应该用 #include <winsock2.h>

kingcaiyao 2002-08-27
  • 打赏
  • 举报
回复
这样:
#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{

}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
if(SendMessage(
RichEdit1->Handle, // handle to destination window
EM_AUTOURLDETECT, // message to send
TRUE, // not used; must be zero
0 // not used; must be zero
)==0)Caption="ok1";
SendMessage(RichEdit1->Handle,EM_SETEVENTMASK ,0,
ENM_LINK|SendMessage(RichEdit1->Handle,EM_GETEVENTMASK,0,0));

RichEdit1->Lines->Add("http://www.csdn.net");
}
//---------------------------------------------------------------------------
void TForm1::MyMessage(TMessage &myMsg)
{
LPNMHDR lpNmhdr = (LPNMHDR)myMsg.LParam;
if (lpNmhdr->code==EN_LINK)
{
ENLINK* lpENLink = ( ENLINK* )lpNmhdr ;
if (lpENLink->msg == WM_LBUTTONDOWN)
{
RichEdit1->SelStart=lpENLink->chrg.cpMin;
RichEdit1->SelLength=lpENLink->chrg.cpMax-lpENLink->chrg.cpMin;

ShellExecute(Handle,"Open",RichEdit1->SelText.c_str(),0,0,SW_SHOW);

}


}

}

jishiping 2002-08-27
  • 打赏
  • 举报
回复
To gfh21cn(葛凤华) :
这些函数是Windows API函数,怎么可以用obj文件啊?只能使用lib文件。对
于Windows的API函数,BCB只会自动连接在import32.lib中说明的API函数,不
会自动连接在import32.lib中没有说明的API函数。import32.lib中包含了大
多数的API函数,但不是包含所有的API函数。当API函数没有在import32.lib
中说明时,就需要自己将对应的lib添加到Project中。
hecrics 2002-08-27
  • 打赏
  • 举报
回复
谢谢大家,现在已经搞定!

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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