- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试为我正在制作的游戏建立一个 UDP 连接,套接字的输入是通过第二个线程读取的,因此游戏可以在等待消息时继续运行。我让它在一个单独的项目中工作,但是当把它移植到我的游戏代码时,我得到一个未解析的外部符号错误:
LNK2019: unresolved external symbol "void __cdecl receiveThread(void *)" (?receiveThread@@YAXPAX@Z) referenced in function "public: bool __thiscall Network::setupServerUDP(void)" (?setupServerUDP@Network@@QAE_NXZ)).
我用谷歌搜索了一下,每个人都说应该将运行时库设置为多线程,我也这样做了(在 MVS 2010 中,我认为甚至不可能将其设置为单线程)但事实并非如此解决错误。我敢肯定这只是某个愚蠢的选项在某处设置了错误的东西。但我只是想不出它是什么。
我包含了 ws2tcpip.h 并且链接到了正确的库:#pragma comment(lib, "Ws2_32.lib")。
我的测试项目和游戏项目之间的唯一区别是测试项目是一个控制台应用程序,另一个是 Windows 应用程序,但我不明白为什么这应该是任何问题。想法?
感谢您的帮助!
干杯,
格言
最佳答案
未解析的函数不是_beginthread
,而是receiveThread
。这就是您的函数 - 您作为参数提供给 _beginthread
的线程入口点。您是否使用正确的调用约定编写了该函数?真的是cdecl
吗?如果您将其声明为 cdecl 但在没有显式调用约定的情况下实现,则会导致这样的链接错误。例如,此代码会导致链接错误:
extern "C" { void receiveThread(void*); } //There's a cdecl function somewhere
//...
_beginthread(receiveThread, 0, 0); //Let's refer to it
//...
void receiveThread(void *p) //But this is not it! It's stdcall.
{
//Do something
}
要解决此问题,请确保您的 receiveThread
实现使用 cdecl 约定或声明为 extern "C"
。
郑重声明,_beginthreadex
需要一个 stdcall 函数,而不是 cdecl。使用 _beginthreadex
,您不必担心约定。
关于c++ - 未解析的外部符号 receiveThread(这是 _beginthread 的入口点),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11313471/
所以,我有一些问题,我怀疑内存泄漏,为了测试我写了这段小代码。通过注释以下行: printf("Calc index: %d\n", ArrLength); 代码运行良好。但是当我取消注释时,程序在几
鉴于情况: class A {}; class B : A; B b; 如果 class A 的默认构造函数使用 _beginthread 创建线程,该线程是否有可能在 class B< 的构造函数之
我一直在我的 (windows) C++ 类中使用 _beginthread 来创建线程。据我了解,要使用 _beginthread 并在类中传递成员函数,必须遵循一个相当迟钝的包装协议(protoc
我想在c代码中调用go方法 操作系统是windows10 我使用 Cygwin64 终端 main.go package main import "C" func main() {} //export
我有以下代码来启动一个新线程 int number = 10; _beginthread(ModbusReadWrite, 0, (void*)number); 函数是: void ModbusRea
我想将 int 变量传递给线程。 我的线程代码: void record_WAVthread(void* data) { int channelId = *(int*)data; co
Windows 中的 CreateThread 和 beginthread API 有什么区别?哪个更适合创建线程? 最佳答案 早期版本的 Microsoft CRT 需要 _beginthread(
我正在实现一个启动 4 个线程的程序。 函数是: void* SOURCE_in(struct SOURCE_1*); void* SOURCE_out(struct SOURCE*); void*
我正在创建一个双线程数组求和程序,我正在使用 windows.h 线程。这是我目前拥有的代码。 #include "StdAfx.h" #include #include #include #i
我有这段代码,但没有得到预期的结果……怎么了? typedef struct { int data1; int data2; }t; void foo(int a, int b) {
我有一台用 C++ 实现的服务器,运行在具有 25GB RAM 的 Windows 2003 企业版上。 在压力测试期间,我看到当它试图通过调用 _beginthread 创建一个新线程时,我得到了
函数中_beginthread , 第二个参数 (stack_size) 是什么意思? 堆栈大小在哪里?默认值 (0) 是什么意思? 最佳答案 堆栈大小在哪里? 调用栈是一个stack维护有关执行软件
这是我的测试代码 #include "stdafx.h" #include "windows.h" #include "iostream" using namespace std; HANDLE hM
是否可以为使用 _beginThread 创建的线程分配名称?我没有使用此功能的选择,但我试图密切关注哪些线程正在关闭,当我没有关联的名称时,这可能会造成混淆。 最佳答案 这是您要找的吗: MSDN:
我正在尝试为我正在制作的游戏建立一个 UDP 连接,套接字的输入是通过第二个线程读取的,因此游戏可以在等待消息时继续运行。我让它在一个单独的项目中工作,但是当把它移植到我的游戏代码时,我得到一个未解析
我尝试用 C++ 编写多线程 WIN32 应用程序,但由于我遇到了困难。其中一个窗口过程创建了一个线程,它管理这个窗口的输出。如果此窗口过程收到一条消息(来自其他窗口过程),它应该将其传输到它们的线程
我是线程和 Winforms/C++ 的新手。当我按下一个按钮时,我想在一个新线程中启动一个函数。我一直在关注这个 tutorial对于线程。当我在单独的 VC++ 项目中构建该站点上给出的示例代码时
我要执行上述操作。 void myFunc(void *parameters) { myObject myObj = // Here I would like to receive the ob
1)这篇文章的答案WaitForSingleObject : how to get handle from _beginthreadex说只有将 uintptr_t returned _beginth
我是第一次尝试使用 Windows(在 VS2010 中)的线程库。但我想我遗漏了一些东西......我如何加入创建的线程?当线程仍在运行时,如何防止 main()-Programm(或其他“高级”函
我是一名优秀的程序员,十分优秀!