cURL / Mailing Lists / curl-library / Single Mail

curl-library

Re: sukender: curl/tests/libtest CMakeLists.txt,NONE,1.1

From: Sukender <suky0001_at_free.fr>
Date: Wed, 08 Apr 2009 23:15:20 +0200

Daniel Stenberg wrote:
> On Wed, 8 Apr 2009, Sukender wrote:
>
>>> I'm not really sure about chat to remove/change. Do you have an idea?
>>> Should we use a special flag that means "I'm using directly
>>> mprintf.c, so don't set printf-like functions to be imported"?
>>
>> I will commit my changes in include/curl/curl.h and mprintf.h and
>> such. They are not really intrusive. However, if you find the changes
>> unsuitable, I'll modify or rollback anything you want. Just tell me in
>> that case.
>
> If you post your suggested changes here as a patch we can discuss them
> before you commit anything. That's a better way...
>

In curl.h, line 100 the code looks like:

#if (defined(WIN32) || defined(_WIN32) || defined(__SYMBIAN32__)) && \
     !defined(CURL_STATICLIB)
#if defined(BUILDING_LIBCURL)
#define CURL_EXTERN __declspec(dllexport)
#else
#define CURL_EXTERN __declspec(dllimport)
#endif
#else

#ifdef CURL_HIDDEN_SYMBOLS
#define CURL_EXTERN CURL_EXTERN_SYMBOL
#else
#define CURL_EXTERN
#endif
#endif

My question is: why don't CURL_HIDDEN_SYMBOLS is tested when we're in Win32 DLL? Isn't there something missing here?

And about the define to avoid DLL linkage problem, I suggest:
#ifdef USES_DIRECT_CURL_UTILITIES
  #define CURL_UTILITY_EXTERN
#else
  #define CURL_UTILITY_EXTERN CURL_EXTERN
#endif

And changing CURL_EXTERN to CURL_UTILITY_EXTERN when needed. For example with curl_strequal, we would change:
  CURL_EXTERN int (curl_strequal)(const char *s1, const char *s2);
to
  CURL_UTILITY_EXTERN int (curl_strequal)(const char *s1, const char *s2);

But that's not clear if it sounds coherent with my first remark... Any idea?

-- 
Sukender
PVLE - Lightweight cross-platform game engine - http://pvle.sourceforge.net/
Received on 2009-04-08