求救!!!! MFC 和CLR 的.h文件引用問題

shizhijia 2009-02-09 09:57:45
求助!!

本人有一個。h文件(.dll自帶的),放在MFC,win32下都沒有問題。

放在CLR的FORM下面,就開始包語法錯誤!!!!! 如下!!

郁悶中。請問要如何改正了!!!

1>C:\Documents and Settings\milor\桌面\ftd2xx.h(64) : error C2146: 語法錯誤 : 遺漏 ';' (在識別項 'FT_HANDLE' 之前)
1>C:\Documents and Settings\milor\桌面\ftd2xx.h(64) : error C4430: 遺漏型別規範 - 假設為 int。注意: C++ 不支援 default-int
1>C:\Documents and Settings\milor\桌面\ftd2xx.h(64) : error C4430: 遺漏型別規範 - 假設為 int。注意: C++ 不支援 default-int
1>C:\Documents and Settings\milor\桌面\ftd2xx.h(65) : error C2146: 語法錯誤 : 遺漏 ';' (在識別項 'FT_STATUS' 之前)
1>C:\Documents and Settings\milor\桌面\ftd2xx.h(65) : error C4430: 遺漏型別規範 - 假設為 int。注意: C++ 不支援 default-int
1>C:\Documents and Settings\milor\桌面\ftd2xx.h(65) : error C4430: 遺漏型別規範 - 假設為 int。注意: C++ 不支援 default-int
1>C:\Documents and Settings\milor\桌面\ftd2xx.h(180) : error C2065: 'DWORD' : 未宣告的識別項
1>C:\Documents and Settings\milor\桌面\ftd2xx.h(180) : error C2065: 'DWORD' : 未宣告的識別項
1>C:\Documents and Settings\milor\桌面\ftd2xx.h(180) : error C2513: 'void *' : 在 '=' 之前沒有宣告變數
1>C:\Documents and Settings\milor\桌面\ftd2xx.h(217) : error C2146: 語法錯誤 : 遺漏 ';' (在識別項 'WINAPI' 之前)
1>C:\Documents and Settings\milor\桌面\ftd2xx.h(217) : error C4430: 遺漏型別規範 - 假設為 int。注意: C++ 不支援 default-int
1>C:\Documents and Settings\milor\桌面\ftd2xx.h(217) : error C2370: 'FT_STATUS' : 重複定義; 儲存類別不相同
1> C:\Documents and Settings\milor\桌面\ftd2xx.h(65) : 請參閱 'FT_STATUS' 的宣告
1>C:\Documents and Settings\milor\桌面\ftd2xx.h(217) : warning C4394: 'FT_STATUS' : per-appdomain 符號不可用 __declspec(dllimport) 標記
1>C:\Documents and Settings\milor\桌面\ftd2xx.h(217) : error C2146: 語法錯誤 : 遺漏 ';' (在識別項 'FT_Open' 之前)
1>C:\Documents and Settings\milor\桌面\ftd2xx.h(217) : error C4430: 遺漏型別規範 - 假設為 int。注意: C++ 不支援 default-int
1>C:\Documents and Settings\milor\桌面\ftd2xx.h(219) : error C2061: 語法錯誤 : 識別項 'FT_HANDLE'
1>C:\Documents and Settings\milor\桌面\ftd2xx.h(220) : error C4430: 遺漏型別規範 - 假設為 int。注意: C++ 不支援 default-int
1>C:\Documents and Settings\milor\桌面\ftd2xx.h(223) : error C2146: 語法錯誤 : 遺漏 ';' (在識別項 'WINAPI' 之前)
1>C:\Documents and Settings\milor\桌面\ftd2xx.h(223) : error C4430: 遺漏型別規範 - 假設為 int。注意: C++ 不支援 default-int
1>C:\Documents and Settings\milor\桌面\ftd2xx.h(223) : error C2370: 'FT_STATUS' : 重複定義; 儲存類別不相同
1> C:\Documents and Settings\milor\桌面\ftd2xx.h(65) : 請參閱 'FT_STATUS' 的宣告
1>C:\Documents and Settings\milor\桌面\ftd2xx.h(223) : warning C4394: 'FT_STATUS' : per-appdomain 符號不可用 __declspec(dllimport) 標記
1>C:\Documents and Settings\milor\桌面\ftd2xx.h(223) : error C2146: 語法錯誤 : 遺漏 ';' (在識別項 'FT_OpenEx' 之前)
1>C:\Documents and Settings\milor\桌面\ftd2xx.h(223) : error C4430: 遺漏型別規範 - 假設為 int。注意: C++ 不支援 default-int
1>C:\Documents and Settings\milor\桌面\ftd2xx.h(223) : error C2086: 'int WINAPI' : 重複定義
1> C:\Documents and Settings\milor\桌面\ftd2xx.h(217) : 請參閱 'WINAPI' 的宣告
1>C:\Documents and Settings\milor\桌面\ftd2xx.h(225) : error C2061: 語法錯誤 : 識別項 'DWORD'
1>C:\Documents and Settings\milor\桌面\ftd2xx.h(227) : error C4430: 遺漏型別規範 - 假設為 int。注意: C++ 不支援 default-int
1>C:\Documents and Settings\milor\桌面\ftd2xx.h(230) : error C2146: 語法錯誤 : 遺漏 ';' (在識別項 'WINAPI' 之前)
1>C:\Documents and Settings\milor\桌面\ftd2xx.h(230) : error C4430: 遺漏型別規範 - 假設為 int。注意: C++ 不支援 default-int
1>C:\Documents and Settings\milor\桌面\ftd2xx.h(230) : error C2370: 'FT_STATUS' : 重複定義; 儲存類別不相同
1> C:\Documents and Settings\milor\桌面\ftd2xx.h(65) : 請參閱 'FT_STATUS' 的宣告
1>C:\Documents and Settings\milor\桌面\ftd2xx.h(230) : warning C4394: 'FT_STATUS' : per-appdomain 符號不可用 __declspec(dllimport) 標記
1>C:\Documents and Settings\milor\桌面\ftd2xx.h(230) : error C2146: 語法錯誤 : 遺漏 ';' (在識別項 'FT_ListDevices' 之前)
1>C:\Documents and Settings\milor\桌面\ftd2xx.h(230) : error C4430: 遺漏型別規範 - 假設為 int。注意: C++ 不支援 default-int
1>C:\Documents and Settings\milor\桌面\ftd2xx.h(230) : error C2086: 'int WINAPI' : 重複定義
1> C:\Documents and Settings\milor\桌面\ftd2xx.h(217) : 請參閱 'WINAPI' 的宣告
1>C:\Documents and Settings\milor\桌面\ftd2xx.h(233) : error C2061: 語法錯誤 : 識別項 'DWORD'
1>C:\Documents and Settings\milor\桌面\ftd2xx.h(234) : error C4430: 遺漏型別規範 - 假設為 int。注意: C++ 不支援 default-int
1>C:\Documents and Settings\milor\桌面\ftd2xx.h(237) : error C2146: 語法錯誤 : 遺漏 ';' (在識別項 'WINAPI' 之前)
1>C:\Documents and Settings\milor\桌面\ftd2xx.h(237) : error C4430: 遺漏型別規範 - 假設為 int。注意: C++ 不支援 default-int
1>C:\Documents and Settings\milor\桌面\ftd2xx.h(237) : error C2370: 'FT_STATUS' : 重複定義; 儲存類別不相同
1> C:\Documents and Settings\milor\桌面\ftd2xx.h(65) : 請參閱 'FT_STATUS' 的宣告
1>C:\Documents and Settings\milor\桌面\ftd2xx.h(237) : warning C4394: 'FT_STATUS' : per-appdomain 符號不可用 __declspec(dllimport) 標記
1>C:\Documents and Settings\milor\桌面\ftd2xx.h(237) : error C2146: 語法錯誤 : 遺漏 ';' (在識別項 'FT_Close' 之前)
1>C:\Documents and Settings\milor\桌面\ftd2xx.h(237) : error C4430: 遺漏型別規範 - 假設為 int。注意: C++ 不支援 default-int
1>C:\Documents and Settings\milor\桌面\ftd2xx.h(237) : error C2086: 'int WINAPI' : 重複定義
1> C:\Documents and Settings\milor\桌面\ftd2xx.h(217) : 請參閱 'WINAPI' 的宣告
1>C:\Documents and Settings\milor\桌面\ftd2xx.h(239) : error C2146: 語法錯誤 : 遺漏 ')' (在識別項 'ftHandle' 之前)
1>C:\Documents and Settings\milor\桌面\ftd2xx.h(239) : error C4430: 遺漏型別規範 - 假設為 int。注意: C++ 不支援 default-int
1>C:\Documents and Settings\milor\桌面\ftd2xx.h(239) : error C2059: 語法錯誤 : ')'
1>C:\Documents and Settings\milor\桌面\ftd2xx.h(242) : error C2146: 語法錯誤 : 遺漏 ';' (在識別項 'WINAPI' 之前)
1>C:\Documents and Settings\milor\桌面\ftd2xx.h(242) : error C4430: 遺漏型別規範 - 假設為 int。注意: C++ 不支援 default-int
1>C:\Documents and Settings\milor\桌面\ftd2xx.h(242) : error C2370: 'FT_STATUS' : 重複定義; 儲存類別不相同
1> C:\Documents and Settings\milor\桌面\ftd2xx.h(65) : 請參閱 'FT_STATUS' 的宣告


...全文
959 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
hhyttppd 2009-02-09
  • 打赏
  • 举报
回复
你所谓的form是什么工程
vc clr?
shizhijia 2009-02-09
  • 打赏
  • 举报
回复
//。h文件部分內容如下
/*++

Copyright (c) 2001-2007 Future Technology Devices International Ltd.

Module Name:

ftd2xx.h

Abstract:

Native USB device driver for FTDI FT8U232/245
FTD2XX library definitions

Environment:

kernel & user mode

Revision History:

13/03/01 awm Created.
13/01/03 awm Added device information support.
19/03/03 awm Added FT_W32_CancelIo.
12/06/03 awm Added FT_StopInTask and FT_RestartInTask.
18/09/03 awm Added FT_SetResetPipeRetryCount.
10/10/03 awm Added FT_ResetPort.
23/01/04 awm Added support for open-by-location.
16/03/04 awm Added support for FT2232C.
23/09/04 awm Added support for FT232R.
20/10/04 awm Added FT_CyclePort.
18/01/05 awm Added FT_DEVICE_LIST_INFO_NODE type.
11/02/05 awm Added LocId to FT_DEVICE_LIST_INFO_NODE.
25/08/05 awm Added FT_SetDeadmanTimeout.
02/12/05 awm Removed obsolete references.
05/12/05 awm Added FT_GetVersion, FT_GetVersionEx.
08/09/06 awm Added FT_W32_GetCommMask.
11/09/06 awm Added FT_Rescan.
11/07/07 awm Added support for FT2232H and FT4232H.
10/08/07 awm Added flags definitions.
21/11/07 mja Added FT_GetComPortNumber.
05/06/08 mja Added EEPROM extensions for FT2232H.


--*/


#ifndef FTD2XX_H
#define FTD2XX_H

// The following ifdef block is the standard way of creating macros
// which make exporting from a DLL simpler. All files within this DLL
// are compiled with the FTD2XX_EXPORTS symbol defined on the command line.
// This symbol should not be defined on any project that uses this DLL.
// This way any other project whose source files include this file see
// FTD2XX_API functions as being imported from a DLL, whereas this DLL
// sees symbols defined with this macro as being exported.

#ifdef FTD2XX_EXPORTS
#define FTD2XX_API __declspec(dllexport)
#else
#define FTD2XX_API __declspec(dllimport)
#endif


typedef PVOID FT_HANDLE;
typedef ULONG FT_STATUS;

//
// Device status
//
enum {
FT_OK,
FT_INVALID_HANDLE,
FT_DEVICE_NOT_FOUND,
FT_DEVICE_NOT_OPENED,
FT_IO_ERROR,
FT_INSUFFICIENT_RESOURCES,
FT_INVALID_PARAMETER,
FT_INVALID_BAUD_RATE,

FT_DEVICE_NOT_OPENED_FOR_ERASE,
FT_DEVICE_NOT_OPENED_FOR_WRITE,
FT_FAILED_TO_WRITE_DEVICE,
FT_EEPROM_READ_FAILED,
FT_EEPROM_WRITE_FAILED,
FT_EEPROM_ERASE_FAILED,
FT_EEPROM_NOT_PRESENT,
FT_EEPROM_NOT_PROGRAMMED,
FT_INVALID_ARGS,
FT_NOT_SUPPORTED,
FT_OTHER_ERROR,
FT_DEVICE_LIST_NOT_READY,
};


#define FT_SUCCESS(status) ((status) == FT_OK)

//
// FT_OpenEx Flags
//

#define FT_OPEN_BY_SERIAL_NUMBER 1
#define FT_OPEN_BY_DESCRIPTION 2
#define FT_OPEN_BY_LOCATION 4

//
// FT_ListDevices Flags (used in conjunction with FT_OpenEx Flags
//

#define FT_LIST_NUMBER_ONLY 0x80000000
#define FT_LIST_BY_INDEX 0x40000000
#define FT_LIST_ALL 0x20000000

#define FT_LIST_MASK (FT_LIST_NUMBER_ONLY|FT_LIST_BY_INDEX|FT_LIST_ALL)

//
// Baud Rates
//

#define FT_BAUD_300 300
#define FT_BAUD_600 600
#define FT_BAUD_1200 1200
#define FT_BAUD_2400 2400
#define FT_BAUD_4800 4800
#define FT_BAUD_9600 9600
#define FT_BAUD_14400 14400
#define FT_BAUD_19200 19200
#define FT_BAUD_38400 38400
#define FT_BAUD_57600 57600
#define FT_BAUD_115200 115200
#define FT_BAUD_230400 230400
#define FT_BAUD_460800 460800
#define FT_BAUD_921600 921600

//
// Word Lengths
//

#define FT_BITS_8 (UCHAR) 8
#define FT_BITS_7 (UCHAR) 7
#define FT_BITS_6 (UCHAR) 6
#define FT_BITS_5 (UCHAR) 5

//
// Stop Bits
//

#define FT_STOP_BITS_1 (UCHAR) 0
#define FT_STOP_BITS_1_5 (UCHAR) 1
#define FT_STOP_BITS_2 (UCHAR) 2

//
// Parity
//

#define FT_PARITY_NONE (UCHAR) 0
#define FT_PARITY_ODD (UCHAR) 1
#define FT_PARITY_EVEN (UCHAR) 2
#define FT_PARITY_MARK (UCHAR) 3
#define FT_PARITY_SPACE (UCHAR) 4

//
// Flow Control
//

#define FT_FLOW_NONE 0x0000
#define FT_FLOW_RTS_CTS 0x0100
#define FT_FLOW_DTR_DSR 0x0200
#define FT_FLOW_XON_XOFF 0x0400

//
// Purge rx and tx buffers
//
#define FT_PURGE_RX 1
#define FT_PURGE_TX 2

//
// Events
//

typedef void (*PFT_EVENT_HANDLER)(DWORD,DWORD);

#define FT_EVENT_RXCHAR 1
#define FT_EVENT_MODEM_STATUS 2
#define FT_EVENT_LINE_STATUS 4

//
// Timeouts
//

#define FT_DEFAULT_RX_TIMEOUT 300
#define FT_DEFAULT_TX_TIMEOUT 300

//
// Device types
//

typedef ULONG FT_DEVICE;

enum {
FT_DEVICE_BM,
FT_DEVICE_AM,
FT_DEVICE_100AX,
FT_DEVICE_UNKNOWN,
FT_DEVICE_2232C,
FT_DEVICE_232R,
FT_DEVICE_2232H,
FT_DEVICE_4232H
};


#ifdef __cplusplus
extern "C" {
#endif


FTD2XX_API
FT_STATUS WINAPI FT_Open(
int deviceNumber,
FT_HANDLE *pHandle
);

FTD2XX_API
FT_STATUS WINAPI FT_OpenEx(
PVOID pArg1,
DWORD Flags,
FT_HANDLE *pHandle
);

FTD2XX_API
FT_STATUS WINAPI FT_ListDevices(
PVOID pArg1,
PVOID pArg2,
DWORD Flags
);

FTD2XX_API
FT_STATUS WINAPI FT_Close(
FT_HANDLE ftHandle
);

FTD2XX_API
FT_STATUS WINAPI FT_Read(
FT_HANDLE ftHandle,
LPVOID lpBuffer,
DWORD dwBytesToRead,
LPDWORD lpBytesReturned
);

FTD2XX_API
FT_STATUS WINAPI FT_Write(
FT_HANDLE ftHandle,
LPVOID lpBuffer,
DWORD dwBytesToWrite,
LPDWORD lpBytesWritten
);

hhyttppd 2009-02-09
  • 打赏
  • 举报
回复
这是链接错误
你的库文件有没有链接进来?
shizhijia 2009-02-09
  • 打赏
  • 举报
回复
暈死,在CLR里,.h文件里面的函數都是抱這個錯誤。

都不知道要怎么改了
shizhijia 2009-02-09
  • 打赏
  • 举报
回复
>正在連結...
1>TestFrom.obj : error LNK2028: 無法解析的語彙基元 (0A000011) "extern "C" unsigned long __stdcall FT_ListDevices(void *,void *,unsigned long)" (?FT_ListDevices@@$$J212YGKPAX0K@Z) 在函式 "private: void __clrcall TestFrom::Form1::button2_Click(class System::Object ^,class System::EventArgs ^)" (?button2_Click@Form1@TestFrom@@$$FA$AAMXP$AAVObject@System@@P$AAVEventArgs@4@@Z) 中被參考
1>TestFrom.obj : error LNK2019: 無法解析的外部符號 "extern "C" unsigned long __stdcall FT_ListDevices(void *,void *,unsigned long)" (?FT_ListDevices@@$$J212YGKPAX0K@Z) 在函式 "private: void __clrcall TestFrom::Form1::button2_Click(class System::Object ^,class System::EventArgs ^)" (?button2_Click@Form1@TestFrom@@$$FA$AAMXP$AAVObject@System@@P$AAVEventArgs@4@@Z) 中被參考
1>C:\Documents and Settings\milor\My Documents\Visual Studio 2008\Projects\TestFrom\Debug\TestFrom.exe : fatal error LNK1120: 2 個無法解析的外部符號


加了之后,就包兩個錯誤了。

這個怎么改啊
hhyttppd 2009-02-09
  • 打赏
  • 举报
回复
你的问题可能是一些类型没有引用,比如PVOID, DWORD,你可以自己定义一下,把错误一个个排除。
这此类型原来在windows.h中定义
shizhijia 2009-02-09
  • 打赏
  • 举报
回复
MFC 下引用.h可以的

現在問題是 放在 CLR 下面的FORM就不行

要如何解決!!!
hhyttppd 2009-02-09
  • 打赏
  • 举报
回复
MFC。。。
shizhijia 2009-02-09
  • 打赏
  • 举报
回复
是的。是VC 下 CLR里面創建的Windows FORM窗口程序

24,860

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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