2011-10-20 15 views
12

Visual Studio 2010 pro'da eski cpp MFC projesini derlemeye çalışıyorum.hata C2733 ikinci C bağlantısı aşırı yüklenmiş fonksiyonun 'işlevine' izin verilmiyor

hata mesajları

birçok fonksiyon göstermek .. Bu Labview kullanılarak derlenmiştir dll kullanır ve şu hata mesajını neden olduğunu bilmiyorum çünkü bu bilgiyi ekliyorum, hepsi aynı hata türü .

error C2733: second C linkage of overloaded function 'function name' not allowed. 

'işlev adı' içerir: 'StrCatW', 'StrCmpNW', 'StrCmpW', 'StrCpyNW' ve 'StrCpyW'

Web üzerinde bir similar case bulundu.

Bağlantıdaki öneri benim durumumda çözülmese de hala aynı hata mesajlarını görüyorum.

Yardım etmeye çalışan herkes için şimdiden teşekkür ederiz.

+1

'StrCatW', 'StrCmpNW' vb. Işlevler bir kereden fazla bağlanır veya birden fazla dosyada * yer alırlar. –

+1

@ThomasMatthews Bu hata, aynı işlevin birden fazla tanımının olduğunu, ancak aynı isimde birden fazla aşırı yüklenmenin olduğunu söylemiyor. Bu durumda problem, C bağlantısı nedeniyle isim managülasyonunun devre dışı kalması ve farklı işlevlere atıfta bulunan aynı ada sahip sembollere sahip olmanızdır. –

cevap

14

MFC ile deneyimim yok, yine de cevap vermeye çalışacağım. extern "C" işlevi farklı bir parametre kümesiyle bildirildiğinde, bu tür bir hata iletisi görüntülenir. Örneğin: Senin durumunda

extern "C" int myfunc(int); 
extern "C" int myfunc(char); 

, iki bildirimleri muhtemelen char* ilişkilidir:

extern "C" char* StrCatW(char*, char*); 
extern "C" wchar_t* StrCatW(wchar_t*, wchar_t*); 

çözümünüzdeki Unicode desteği kapatmayı deneyin: i dll gerçekten eski ise, tahmin, onu Her nasılsa, başka bir bildirimle çelişen char* argümanlarıyla StrCatW bildirir. Bu işe yaramazsa

, (bildiğim kadarıyla, ben hatırlamak /E derleyici anahtarı) ön işlenmiş çıkışını açmak - çıktısı verecektir çok büyük bir dosya, bu yüzden onun içinde StrCatW aramaya, belki de ilgili bazı ipucu verecektir ne oluyor.

+0

önerileriniz için teşekkürler .. Unicode desteğini kapattı ve işe yaramadı bu yüzden ön işlemden çıkmış çıktıyı deneyeceğim ve ne olduğunu görüyorum –

+0

Merhaba Önişlemi açtığımda (/ P in VS 2010), LINK hatası görüyorum kaynak dosya listemdeki ilk cpp'nin obj dosyası olan stdafx.obj sorusu. Önerdiğiniz şeyle alakalı görünen MSDN hata açıklamasını buldum .. http://msdn.microsoft.com/en-us/library/5z9es6ec(v=vs.71).aspx –

+0

Sorunu çözerek sorunu çözdüm. üstbilgi hata 'ikinci C bağlantı' –

İlgili konular