Forum: Diğer Konular RSS
__attribute__((stdcall)) Hata Veriyor.
İbrahim #1
Üye Eki 2015 tarihinden beri · 165 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Konu adı: __attribute__((stdcall)) Hata Veriyor.
Selamün Aleyküm;

İnternette bir C++ örneği gördüm ve onu denemek istedim. Örnekte fonksiyonları stdcall olarak ayarlıyordu. Daha sonra derliyor. stdcall'u şu şekilde kullanıyorum:
#ifndef CPPWRAPPER_H
#define CPPWRAPPER_H
 
#ifdef __cplusplus
#include "example.h"
typedef Example* ExampleHandle;
# define EXPORTCALL __attribute__((stdcall))
#else
typedef struct Example ExampleHandle;
# define EXPORTCALL
#endif
 
#ifdef __cplusplus
extern "C"
{
#endif
 
ExampleHandle EXPORTCALL init_Example();
ExampleHandle EXPORTCALL init_Example(const char* str);
const char* EXPORTCALL get_str_Example(ExampleHandle obj);
 
#ifdef __cplusplus
}
#endif
 
#endif // CPPWRAPPER_H 
Lakin derlemeye çalıştığımda ise stdcall'u yok sayıyor:
cppwrapper.h:17: warning: ‘stdcall’ attribute ignored [-Wattributes]
 ExampleHandle EXPORTCALL init_Example();
                                       ^
NOT : Bu alttaki hata çözüldü. C dili aşırı yüklenmiş fonksiyonları kabul etmediği için isimleri değiştirdim.
Ve şu hatayı da veriyor:
cppwrapper.h:18: error: conflicting declaration of C function ‘ExampleHandle init_Example(const char*)’
 ExampleHandle EXPORTCALL init_Example(const char* str);
                          ^~~~~~~~~~~~
Tanımın çelişkili olduğunu söylüyor lakin nereden hata var onu anlamadım. Kullandığım döküman şurada ve "C/C++ wrapping: second solution" bölümü altındaki kodlar gibi yapıyorum: ftp://ftp.freepascal.org/fpc/docs-pdf/CinFreePascal.pdf.
Teşekkürler.
Bu mesaj İbrahim tarafından değiştirildi; zaman: 2018-01-03, 07:27.
acehreli (Moderatör) #2
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4586 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Sanırım extern "C" baskın çıkıyor ve stdcall gözardı ediliyor.

Ali
Doğrulama Kodu: VeriCode Lütfen resimde gördüğünüz doğrulama kodunu girin:
İfadeler: :-) ;-) :-D :-p :blush: :cool: :rolleyes: :huh: :-/ <_< :-( :'( :#: :scared: 8-( :nuts: :-O
Özel Karakterler:
Bağlı değilsiniz. · Şifremi unuttum · ÜYELİK
This board is powered by the Unclassified NewsBoard software, 20100516-dev, © 2003-10 by Yves Goergen
Şu an: 2018-01-18, 13:13:58 (UTC -08:00)