error C2275 將此類型用作表達式非法 以及 >LINK : fatal error C1007: 無法識別的標誌“-FitObjData”(在“p2”中)

本文描述了兩個常見但是很容易忽略和出錯的問題

a.error C2275 將此類型用作表達式非法

b.>LINK : fatal error C1007: 無法識別的標誌“-FitObjData”(在“p2”中)

1.1.問題描述:

問題是這樣的,合作伙伴發來一段測試代碼,是c寫的,部分代碼如下:


void main(void)
{
	long id = 0;
	char Serial[256] = { 0 };
	char calHD[256] = { 0 };
        id = getHComputerID(Serial, calHD);
	printf("SerialNo:%s\r\n", Serial);
	getchar();
	data Trough_call;
	int result;
	float min, sec;
	Trough_call.na = 2011;
......

我在自己的機器上跑,編譯未通過,在data Trough_call行報錯error C2275 將此類型用作表達式非法

問了一下合作伙伴,他的是能編譯通過跑起來的,進一步溝通發現他用的是vs2015,而我用的vs2010。

是版本的差異導致的?

1.2問題分析

後來仔細看了一下,突然想到了一條c語言和c++的區別。

c語言變量的定義位置需要在函數塊的最前面,而C++卻沒有這個限制,我的2010版本調用了c編譯器來編譯,所以報錯了,可能2015使用了c++的規則。

於是使用了兩種方法來解決。

1.2.1.我將後綴改成cpp,編譯,不再報這個錯誤了。

1.2.2修改代碼

void main(void)
{
	long id = 0;
	char Serial[256] = { 0 };
	char calHD[256] = { 0 };
	data Trough_call;
	int result;
	float min, sec;
        id = getHComputerID(Serial, calHD);
	printf("SerialNo:%s\r\n", Serial);
	getchar();
	Trough_call.na = 2011;
......

也不再報這個錯誤

2.可是又報了錯誤>LINK : fatal error C1007: 無法識別的標誌“-FitObjData”(在“p2”中)。

這個一搜索就知道了原因,使用了高版本的編譯。

反饋給合作伙伴,他用vs2010編譯了庫,解決。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章