小编Jim*_*ell的帖子

对 WinMain 的未定义引用失败

使用 GNU Make (v3.82.90) 构建应用程序时,我不断收到此链接器错误。我已经看过关于 SO 的其他答案,但答案仍然让我望而却步。

gcc -o build obj/teos_init.o obj/teos_event.o obj/teos_task.o obj/teos_sem.o obj
/teos_linkedlist.o obj/teos_log.o  -Iinc/pvt  -Iinc/pub -fmax-errors=3 -std=c11
c:/libs/mingw/bin/../lib/gcc/mingw32/4.9.3/../../../libmingw32.a(main.o):(.text.
startup+0xa7): undefined reference to `WinMain@16'
collect2.exe: error: ld returned 1 exit status
makefile:14: recipe for target 'build' failed
make: *** [build] Error 1
Run Code Online (Sandbox Code Playgroud)

我的makefile就是这样...

INCDIR = inc/pvt inc/pub
SRCDIR = src
OBJDIR = obj
LIBDIR = lib

CC=gcc
CFLAGS := $(foreach d, $(INCDIR), -I$d) -fmax-errors=3 -std=c11

_SRC = teos_init.c teos_event.c teos_task.c teos_sem.c teos_linkedlist.c teos_log.c
_OBJ := $(subst $(SRCDIR),$(OBJDIR),$(_SRC:%.c=%.o)) …
Run Code Online (Sandbox Code Playgroud)

c linker-errors gnu-make winmain

1
推荐指数
1
解决办法
3164
查看次数

如何使用单个MySQL查询更新表中的多个记录?

我想使用单个查询更新MySQL表中的多个记录.基本上,这是一个任务表,它在不同的日期为不同的人分配.当通过在线表单更改和提交这些作业时,会提交大量POST数据(几乎所有待处理的作业).我编写了一个算法来对所有这些信息进行排序并得到我想要的信息,但我仍然坚持编写查询来更新MySQL表:

  // Find the modified records and save their information
  $update = 0;
  for ( $n = 0; $n < $total_records; $n++ )
  {
     if ( $_POST['update'.$n] == true )
     {
        $updates_arr[$update] = array( intval($_POST['user_id'.$n]), intval($_POST['task'.$n]), $_POST['date'.$n] );
        $update++;
     }
  }

  if ( $mysql_db = OpenDatabase() )
  {
     $query  = "UPDATE tasks_tbl";
     if ( $updates_arr[0] )
     {
        $query .= "   SET task = ".$updates_arr[0][1]." WHERE user_id = ".$updates_arr[0][0]." AND date = ".$updates_arr[0][2];
     }

     for ( $n = 1; $n < …
Run Code Online (Sandbox Code Playgroud)

php mysql sql

0
推荐指数
1
解决办法
1285
查看次数

WINAPI SetLastError与C++ Keword投掷

WINAPI SetLastError()和C++关键字有throw什么区别?例如,是SetLastError(5);throw 5;是一样的?

c++ winapi exception custom-errors

0
推荐指数
1
解决办法
921
查看次数

用于在Windows中扫描附加USB设备的工具

任何人都可以推荐一个(最好是免费的)工具来扫描Windows环境中连接的USB设备吗?这仅用于开发目的.我有一个USB外围设备,我知道它连接到我的系统时工作,但我在设备管理器中找不到它.我希望能够专门扫描它,因为我正在扩展我的应用程序以支持多种类型的USB设备,但是很难扫描.谢谢.

windows usb utilities discovery

0
推荐指数
1
解决办法
1万
查看次数

关闭窗口和线程会生成无效的窗口句柄错误 - C++

我的控制台应用程序在自己的线程中生成一个新的(不可见)窗口.在退出应用程序之前,它会尝试清理,并且GetMessage窗口消息泵中的最后一次调用失败. GetLastError返回1400,"无效的窗口句柄."

这是清理在应用程序线程中的进展:

if ( s_hNotifyWindowThread != NULL )
{
    ASSERT(s_pobjNotifyWindow != NULL);

    ::PostMessage( s_pobjNotifyWindow->m_hWnd, WM_CLOSE, 0, 0 );
    ::WaitForSingleObject( s_hNotifyWindowThread, 50000L );      // Step 1: breakpoint here
    ::CloseHandle( s_hNotifyWindowThread );                      // Step 4: breakpoint here
    s_hNotifyWindowThread = NULL;
}
Run Code Online (Sandbox Code Playgroud)

WndProc存在于为窗口创建的新线程中:

static LRESULT CALLBACK WndProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam )
{
    switch ( uMsg )
    {
    case WM_CLOSE:
        ::DestroyWindow( hWnd );    // Step 2: breakpoint here
        break;

    case WM_DESTROY:
        ::PostQuitMessage( 0 …
Run Code Online (Sandbox Code Playgroud)

c++ multithreading exception visual-studio-2008

0
推荐指数
1
解决办法
1413
查看次数

LPBYTE宏在编译时生成错误 - C++

我有以下代码,当我尝试构建应用程序时生成错误:

#define LPAFDU LPBYTE;

typedef struct appAfDataIndIeee_tag
{
    integrPktHead_t head;
    BYTE flags;
    WORD dstShort;
    BYTE dstEndpoint;
    BYTE srcShort;
    BYTE srcIeee[8];
    WORD clusterId;
    BYTE afduLength;
    LPAFDU afdu;       // <-- error
} appAfDataIndIeee_t;
Run Code Online (Sandbox Code Playgroud)

这是它产生的错误:

错误C2208:'BYTE*':没有使用此类型定义的成员
错误C4430:缺少类型说明符 - 假定为int.注意:C++不支持default-int

如果我转出LPADFULPBYTE它编译成功.我更喜欢使用的定义或类型定义LPADFU.有谁知道我怎么能做这个工作?谢谢.

c++ compiler-errors visual-studio-2008

0
推荐指数
1
解决办法
270
查看次数

C++通用类链接错误

我修改了Visual C++应用程序中的现有类,使其成为泛型类.该类由另外两个模块使用.当我单独编译这些模块时,一切正常.但是,当我执行Build All时,我会收到以下链接器错误:

1>Linking...
1>   Creating library C:\ccmdb\prep\g3_v5.3\g3_tools\fc_tools\ZFRTool\ZStackMTI\Debug\ZStackMTI.lib and object C:\ccmdb\prep\g3_v5.3\g3_tools\fc_tools\ZFRTool\ZStackMTI\Debug\ZStackMTI.exp
1>SerialPort.obj : error LNK2019: unresolved external symbol "public: __thiscall CRingBuffer<unsigned char>::CRingBuffer<unsigned char>(unsigned long)" (??0?$CRingBuffer@E@@QAE@K@Z) referenced in function "public: __thiscall CSerialPort::CSerialPort(void)" (??0CSerialPort@@QAE@XZ)
1>ZStackMTI.obj : error LNK2001: unresolved external symbol "public: __thiscall CRingBuffer<unsigned char>::CRingBuffer<unsigned char>(unsigned long)" (??0?$CRingBuffer@E@@QAE@K@Z)
1>SerialPort.obj : error LNK2019: unresolved external symbol "public: __thiscall CRingBuffer<unsigned char>::~CRingBuffer<unsigned char>(void)" (??1?$CRingBuffer@E@@QAE@XZ) referenced in function "public: void * __thiscall CRingBuffer<unsigned char>::`scalar deleting destructor'(unsigned int)" (??_G?$CRingBuffer@E@@QAEPAXI@Z)
1>ZStackMTI.obj : error LNK2001: unresolved external symbol "public: …
Run Code Online (Sandbox Code Playgroud)

c++ generics linker-errors visual-studio-2008

0
推荐指数
1
解决办法
689
查看次数

OleDbDataReader.GetString异常 - 指定的强制转换无效

当我的C#(.NET 3.5)应用程序尝试访问MS Access 2007数据库时,该OleDbReader.GetString()方法抛出异常:

指定演员表无效.

我究竟做错了什么?

OleDbCommand cmd = null;
OleDbDataReader reader = null;
String queryString = "SELECT ids.ENUM_H, bas.[BAS BACnet Object Type/Instance] FROM [OV2 BAS] AS bas INNER JOIN [OV2 RefID] AS ids ON bas.[Ref ID] = ids.[Ref ID]";

this.Open();

try
{
    cmd = new OleDbCommand(queryString, this._conn);
    reader = cmd.ExecuteReader();

    if (!reader.HasRows)
    {
        Exception e = new Exception("Read of mapping table returned no results.");
        throw e;
    }
    else
    {
        while (reader.Read())
        {
            Int32 index;
            String classTypeString = …
Run Code Online (Sandbox Code Playgroud)

c# ms-access-2007 .net-3.5 oledbdatareader

0
推荐指数
1
解决办法
5602
查看次数

函数`feof`始终返回1

我正在尝试读取大小为114,808字节的二进制文件.我为文件分配内存,然后尝试使用fopen和读取文件fread.第一次fread被调用时,它总是以274个字节读取,并且后续调用feof始终返回1,即使显然没有到达文件的末尾.为什么是这样?

根据MSDN文档feof,"该FEOF函数返回非零值,如果读取操作已试图读到文件的结束;否则它返回0".所以我不明白是什么导致feof一直回归1.

这是我到目前为止的代码.任何帮助将非常感激.谢谢!

// Open source file with read-only access
if ( iError == ERROR_SUCCESS )
{
    #ifdef _MSC_VER
    #pragma warning(disable : 4996)
    #endif
    pFile = fopen( pSrcPath, "r" );

    if ( pFile == NULL )
    {
        iError = ERROR_FILE_NOT_FOUND;
    }
}

// Read in source file to memory
if ( iError == ERROR_SUCCESS )
{
    do
    {
        // Buffer pointer passed to fread …
Run Code Online (Sandbox Code Playgroud)

c c++ file-io feof visual-studio-2015

0
推荐指数
1
解决办法
201
查看次数