Bir Win32 penceresini uygulamak zorunda kaldığım bir ödevi bitirdikten sonra, işlevlerimi bir dll'ye vermek istedim. C Dışa aktarılamayan işlevler
Şaşırtıcı bağlayıcı- __declspec (dllexport)/__declspec (dllimport) doğru tanımlandığı gibidir ve kullanılan taşıyamazsınız, başvurulmayan bağlantılar şikayet (veya ++ I C için kullanılan gibi).
- Kitaplık, bağlayıcıya doğru bir şekilde belirtildi.
- İşlevler bağımlılık yürüteç içinde görünür.
bağlayıcı daima (Almanca olarak) şikayet:
hata LNK2019: aufgel ÷ STES externes Sembol "" __declspec (dllimport) struct cw_Window * __Cdecl createWindow (Char *, imzasız Verweis auf nicht kısa, imzasız kısa) "(__imp_? createWindow @@ YAPEAUcw_Window @@ PEADGG @ Z)" Funktion "başlığında". C: \ Users \ jkirs \ Desktop \ Çalışma Alanı \ Unit.MSVC2015-x86-64.88a6cdd3 \ intermediate.Unit.exe \ MSVC2015_x86_64 salınımlı: önemli hata LNK1120: 1 nicht aufgel ÷ ste Externe
Benim fonksiyonları prototip şu şekilde tanımlanmaktadır:
"API" aşağıdaki gibi tanımlanmıştırtypedef struct cw_Window cw_Window_t;
typedef struct cw_Event cw_Event_t;
API cw_Window_t* createWindow(char* pTitle, uint16_t nWidth, uint16_t nHeight);
API void destroyWindow(cw_Window_t* pWindow);
API void pollEvent(cw_Window_t* pWindow, cw_Event_t* pEvent);
:
#ifdef _MSC_VER
#ifdef CW_EXPORT
#define API __declspec(dllexport)
#else
#define API __declspec(dllimport)
#endif
#else
#define API // TODO
#endif
I de API 'tanımı 'extern "C"' eklemek çalıştı, wit Bir sonuç, ancak 'C' dizesi literal hakkında şikayetçi.
Bu konuyla karşılaşan biri oldu ve bana doğru yöne doğru işaret edebilir mi?
Önemli olan: Visual Studio C++ 2015 (MSVC_x86_64); başlık dosyam '.h' ile biter ve kaynak dosyaları '.c' ile biter.
DÜZENLEME: Lib'in C kodunda tekrar kullanılması gerekiyordu.