Hello!

Attached to this mail you'll find a patch which aims to fix all issues 
compiling libftdi-0.20 using Microsoft Visual Studio 2012 including a 
README.msvc describing how to do it.

I would be happy if this patch would be commited to the repository.

Greetings

Matthias

--
libftdi - see http://www.intra2net.com/en/developer/libftdi for details.
To unsubscribe send a mail to [email protected]   
diff --unidirectional-new-file --strip-trailing-cr -u -r libftdi-0.20_orig/CMakeLists.txt libftdi-0.20/CMakeLists.txt
--- libftdi-0.20_orig/CMakeLists.txt	2012-03-19 12:21:16.000000000 +0100
+++ libftdi-0.20/CMakeLists.txt	2012-10-12 00:58:42.071816000 +0200
@@ -79,6 +79,16 @@
 set(CPACK_SOURCE_IGNORE_FILES          "\\\\.git")
 set(CPACK_SOURCE_PACKAGE_FILE_NAME     ${CPACK_PACKAGE_FILE_NAME})
 
+if(MSVC)
+  FIND_PACKAGE(Boost)
+  if(Boost_FOUND)
+    INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIR})
+    ADD_DEFINITIONS( "-DHAS_BOOST" )
+  endif(Boost_FOUND)
+  SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /EHsc")
+  add_definitions(-DMSVC)
+endif()
+
 # Subdirectories
 if(${UNIX})
   set(CPACK_SET_DESTDIR "ON")
diff --unidirectional-new-file --strip-trailing-cr -u -r libftdi-0.20_orig/examples/CMakeLists.txt libftdi-0.20/examples/CMakeLists.txt
--- libftdi-0.20_orig/examples/CMakeLists.txt	2012-03-15 10:58:44.000000000 +0100
+++ libftdi-0.20/examples/CMakeLists.txt	2012-10-12 01:13:42.957844000 +0200
@@ -2,9 +2,9 @@
 
 if (EXAMPLES)
     # Includes
-    include( ${CMAKE_CURRENT_SOURCE_DIR}
-            ${CMAKE_CURRENT_BINARY_DIR}
-            )
+#    include( ${CMAKE_CURRENT_SOURCE_DIR}
+#            ${CMAKE_CURRENT_BINARY_DIR}
+#            )
 
     message(STATUS "Building example programs.")
 
@@ -13,23 +13,27 @@
 
     # Targets
     add_executable(simple simple.c)
-    add_executable(bitbang bitbang.c)
-    add_executable(bitbang2 bitbang2.c)
-    add_executable(bitbang_cbus bitbang_cbus.c)
-    add_executable(bitbang_ft2232 bitbang_ft2232.c)
     add_executable(find_all find_all.c)
-    add_executable(serial_test serial_test.c)
-    add_executable(baud_test baud_test.c)
+    if(NOT MSVC)
+      add_executable(bitbang bitbang.c)
+      add_executable(bitbang2 bitbang2.c)
+      add_executable(bitbang_cbus bitbang_cbus.c)
+      add_executable(bitbang_ft2232 bitbang_ft2232.c)
+      add_executable(baud_test baud_test.c)
+      add_executable(serial_test serial_test.c)
+    endif(NOT MSVC)
 
     # Linkage
     target_link_libraries(simple ftdi)
-    target_link_libraries(bitbang ftdi)
-    target_link_libraries(bitbang2 ftdi)
-    target_link_libraries(bitbang_cbus ftdi)
-    target_link_libraries(bitbang_ft2232 ftdi)
     target_link_libraries(find_all ftdi)
-    target_link_libraries(serial_test ftdi)
-    target_link_libraries(baud_test ftdi)
+    if(NOT MSVC)
+      target_link_libraries(bitbang ftdi)
+      target_link_libraries(bitbang2 ftdi)
+      target_link_libraries(bitbang_cbus ftdi)
+      target_link_libraries(bitbang_ft2232 ftdi)
+      target_link_libraries(baud_test ftdi)
+      target_link_libraries(serial_test ftdi)
+    endif(NOT MSVC)
 
     # libftdi++ examples
     if(FTDI_BUILD_CPP)
diff --unidirectional-new-file --strip-trailing-cr -u -r libftdi-0.20_orig/FindUSB.cmake libftdi-0.20/FindUSB.cmake
--- libftdi-0.20_orig/FindUSB.cmake	2012-03-15 10:58:44.000000000 +0100
+++ libftdi-0.20/FindUSB.cmake	2012-10-12 00:28:27.632513000 +0200
@@ -1,4 +1,4 @@
-# - Try to find the freetype library
+# - Try to find the libusb library
 # Once done this defines
 #
 #  LIBUSB_FOUND - system has libusb
@@ -24,11 +24,13 @@
     pkg_check_modules(PC_LIBUSB libusb)
   ENDIF(NOT WIN32)
 
-  FIND_PATH(LIBUSB_INCLUDE_DIR usb.h
-    PATHS ${PC_LIBUSB_INCLUDEDIR} ${PC_LIBUSB_INCLUDE_DIRS})
-
-  FIND_LIBRARY(LIBUSB_LIBRARIES NAMES usb 
-    PATHS ${PC_LIBUSB_LIBDIR} ${PC_LIBUSB_LIBRARY_DIRS})
+  if(MSVC)
+    FIND_PATH(LIBUSB_INCLUDE_DIR lusb0_usb.h PATHS ${PC_LIBUSB_INCLUDEDIR} ${PC_LIBUSB_INCLUDE_DIRS})
+    FIND_LIBRARY(LIBUSB_LIBRARIES libusb.lib PATHS ${PC_LIBUSB_LIBDIR} ${PC_LIBUSB_LIBRARY_DIRS})
+  else(MSVC)
+    FIND_PATH(LIBUSB_INCLUDE_DIR usb.h PATHS ${PC_LIBUSB_INCLUDEDIR} ${PC_LIBUSB_INCLUDE_DIRS})
+    FIND_LIBRARY(LIBUSB_LIBRARIES NAMES usb PATHS ${PC_LIBUSB_LIBDIR} ${PC_LIBUSB_LIBRARY_DIRS})
+  endif(MSVC)
 
   include(FindPackageHandleStandardArgs)
   FIND_PACKAGE_HANDLE_STANDARD_ARGS(LIBUSB DEFAULT_MSG LIBUSB_LIBRARIES LIBUSB_INCLUDE_DIR)
diff --unidirectional-new-file --strip-trailing-cr -u -r libftdi-0.20_orig/ftdipp/CMakeLists.txt libftdi-0.20/ftdipp/CMakeLists.txt
--- libftdi-0.20_orig/ftdipp/CMakeLists.txt	2012-03-15 10:58:44.000000000 +0100
+++ libftdi-0.20/ftdipp/CMakeLists.txt	2012-10-12 01:11:34.433812000 +0200
@@ -29,7 +29,12 @@
 
     # Static library
     add_library(ftdipp-static STATIC ${cpp_sources})
-    set_target_properties(ftdipp-static PROPERTIES OUTPUT_NAME "ftdipp")
+    if(MSVC)
+      set_target_properties(ftdipp-static PROPERTIES OUTPUT_NAME "ftdipp-static")
+    else(MSVC)
+      set_target_properties(ftdipp-static PROPERTIES OUTPUT_NAME "ftdipp")
+    endif(MSVC)
+
 
     # Prevent clobbering each other during the build
     set_target_properties(ftdipp PROPERTIES CLEAN_DIRECT_OUTPUT 1)
diff --unidirectional-new-file --strip-trailing-cr -u -r libftdi-0.20_orig/ftdipp/ftdi.hpp libftdi-0.20/ftdipp/ftdi.hpp
--- libftdi-0.20_orig/ftdipp/ftdi.hpp	2012-03-15 10:58:44.000000000 +0100
+++ libftdi-0.20/ftdipp/ftdi.hpp	2012-10-12 00:53:51.868124000 +0200
@@ -29,6 +29,16 @@
 #ifndef __libftdi_hpp__
 #define __libftdi_hpp__
 
+#if defined (_WIN32)
+  #if defined (ftdipp_EXPORTS)
+    #define  FTDIPP_EXPORT __declspec(dllexport)
+  #else
+    #define  FTDIPP_EXPORT __declspec(dllimport)
+  #endif /* FTDIPP_EXPORTS */
+#else /* defined (_WIN32) */
+ #define FTDIPP_EXPORT
+#endif
+
 #include <list>
 #include <string>
 #include <boost/shared_ptr.hpp>
@@ -44,7 +54,7 @@
 /*! \brief FTDI device context.
  * Represents single FTDI device context.
  */
-class Context
+class FTDIPP_EXPORT Context
 {
     /* Friends */
     friend class Eeprom;
@@ -146,7 +156,7 @@
 
 /*! \brief Device EEPROM.
  */
-class Eeprom
+class FTDIPP_EXPORT Eeprom
 {
 public:
     Eeprom(Context* parent);
@@ -171,7 +181,7 @@
 
 /*! \brief Device list.
  */
-class List
+class FTDIPP_EXPORT List
 {
 public:
     List(struct ftdi_device_list* devlist = 0);
diff --unidirectional-new-file --strip-trailing-cr -u -r libftdi-0.20_orig/README.msvc libftdi-0.20/README.msvc
--- libftdi-0.20_orig/README.msvc	1970-01-01 01:00:00.000000000 +0100
+++ libftdi-0.20/README.msvc	2012-10-12 00:58:21.977226000 +0200
@@ -0,0 +1,15 @@
+This manual expects libusb-win32 to be located in
+C:/build/libusb-win32-bin-1.2.6.0
+
+and the libftdi source code in
+C:/build/libftdi-0.20
+
+1. Open MSVC command line
+2. cd C:\build
+3. mkdir libftdi-msvc-build
+4. cd libftdi-msvc-build
+5. cmake -DPC_LIBUSB_LIBDIR="C:/build/libusb-win32-bin-1.2.6.0/lib/msvc" -DPC_LIBUSB_INCLUDEDIR="C:/build/libusb-win32-bin-1.2.6.0/include" ../libftdi-0.20
+6. nmake
+
+After this step you should find the result libraries in the subdirectories of
+C:/build/libftdi-msvc-build
\ Kein Zeilenumbruch am Dateiende.
diff --unidirectional-new-file --strip-trailing-cr -u -r libftdi-0.20_orig/src/CMakeLists.txt libftdi-0.20/src/CMakeLists.txt
--- libftdi-0.20_orig/src/CMakeLists.txt	2012-03-15 10:58:44.000000000 +0100
+++ libftdi-0.20/src/CMakeLists.txt	2012-10-12 01:14:18.427322000 +0200
@@ -14,7 +14,11 @@
 
 # Static library
 add_library(ftdi-static STATIC ${c_sources})
-set_target_properties(ftdi-static PROPERTIES OUTPUT_NAME "ftdi")
+if(MSVC)
+  set_target_properties(ftdi-static PROPERTIES OUTPUT_NAME "ftdi-static")
+else(MSVC)
+  set_target_properties(ftdi-static PROPERTIES OUTPUT_NAME "ftdi")
+endif(MSVC)
 
 # Prevent clobbering each other during the build
 set_target_properties(ftdi PROPERTIES CLEAN_DIRECT_OUTPUT 1)
@@ -51,7 +55,7 @@
             )
 
    install( TARGETS ftdi-static
-            DESTINATION bin
+            DESTINATION lib
             COMPONENT staticlibs
             )
 
diff --unidirectional-new-file --strip-trailing-cr -u -r libftdi-0.20_orig/src/ftdi.c libftdi-0.20/src/ftdi.c
--- libftdi-0.20_orig/src/ftdi.c	2012-03-15 10:58:44.000000000 +0100
+++ libftdi-0.20/src/ftdi.c	2012-10-12 00:35:42.806781000 +0200
@@ -28,7 +28,11 @@
 /** \addtogroup libftdi */
 /* @{ */
 
+#if defined(MSVC)
+#include <lusb0_usb.h>
+#else
 #include <usb.h>
+#endif
 #include <string.h>
 #include <errno.h>
 #include <stdio.h>
diff --unidirectional-new-file --strip-trailing-cr -u -r libftdi-0.20_orig/src/ftdi.h libftdi-0.20/src/ftdi.h
--- libftdi-0.20_orig/src/ftdi.h	2012-03-15 10:58:44.000000000 +0100
+++ libftdi-0.20/src/ftdi.h	2012-10-12 00:56:48.830663000 +0200
@@ -17,7 +17,21 @@
 #ifndef __libftdi_h__
 #define __libftdi_h__
 
+#if defined (_WIN32)
+  #if defined (ftdi_EXPORTS) || defined (ftdistatic_EXPORTS)
+    #define  FTDI_EXPORT __declspec(dllexport)
+  #else
+    #define  FTDI_EXPORT __declspec(dllimport)
+  #endif /* ftdi_EXPORTS */
+#else /* defined (_WIN32) */
+ #define FTDI_EXPORT
+#endif
+
+#if defined(MSVC)
+#include <lusb0_usb.h>
+#else
 #include <usb.h>
+#endif
 
 #define FTDI_DEFAULT_EEPROM_SIZE 128
 
@@ -361,95 +375,95 @@
 {
 #endif
 
-    int ftdi_init(struct ftdi_context *ftdi);
-    struct ftdi_context *ftdi_new(void);
-    int ftdi_set_interface(struct ftdi_context *ftdi, enum ftdi_interface interface);
-
-    void ftdi_deinit(struct ftdi_context *ftdi);
-    void ftdi_free(struct ftdi_context *ftdi);
-    void ftdi_set_usbdev (struct ftdi_context *ftdi, usb_dev_handle *usbdev);
+    FTDI_EXPORT int ftdi_init(struct ftdi_context *ftdi);
+    FTDI_EXPORT struct ftdi_context *ftdi_new(void);
+    FTDI_EXPORT int ftdi_set_interface(struct ftdi_context *ftdi, enum ftdi_interface interface);
+
+    FTDI_EXPORT void ftdi_deinit(struct ftdi_context *ftdi);
+    FTDI_EXPORT void ftdi_free(struct ftdi_context *ftdi);
+    FTDI_EXPORT void ftdi_set_usbdev (struct ftdi_context *ftdi, usb_dev_handle *usbdev);
 
-    int ftdi_usb_find_all(struct ftdi_context *ftdi, struct ftdi_device_list **devlist,
+    FTDI_EXPORT int ftdi_usb_find_all(struct ftdi_context *ftdi, struct ftdi_device_list **devlist,
                           int vendor, int product);
-    void ftdi_list_free(struct ftdi_device_list **devlist);
-    void ftdi_list_free2(struct ftdi_device_list *devlist);
-    int ftdi_usb_get_strings(struct ftdi_context *ftdi, struct usb_device *dev,
+    FTDI_EXPORT void ftdi_list_free(struct ftdi_device_list **devlist);
+    FTDI_EXPORT void ftdi_list_free2(struct ftdi_device_list *devlist);
+    FTDI_EXPORT int ftdi_usb_get_strings(struct ftdi_context *ftdi, struct usb_device *dev,
                              char * manufacturer, int mnf_len,
                              char * description, int desc_len,
                              char * serial, int serial_len);
 
-    int ftdi_usb_open(struct ftdi_context *ftdi, int vendor, int product);
-    int ftdi_usb_open_desc(struct ftdi_context *ftdi, int vendor, int product,
+    FTDI_EXPORT int ftdi_usb_open(struct ftdi_context *ftdi, int vendor, int product);
+    FTDI_EXPORT int ftdi_usb_open_desc(struct ftdi_context *ftdi, int vendor, int product,
                            const char* description, const char* serial);
-    int ftdi_usb_open_desc_index(struct ftdi_context *ftdi, int vendor, int product,
+    FTDI_EXPORT int ftdi_usb_open_desc_index(struct ftdi_context *ftdi, int vendor, int product,
                            const char* description, const char* serial, unsigned int index);
-    int ftdi_usb_open_dev(struct ftdi_context *ftdi, struct usb_device *dev);
-    int ftdi_usb_open_string(struct ftdi_context *ftdi, const char* description);
+    FTDI_EXPORT int ftdi_usb_open_dev(struct ftdi_context *ftdi, struct usb_device *dev);
+    FTDI_EXPORT int ftdi_usb_open_string(struct ftdi_context *ftdi, const char* description);
 
-    int ftdi_usb_close(struct ftdi_context *ftdi);
-    int ftdi_usb_reset(struct ftdi_context *ftdi);
-    int ftdi_usb_purge_rx_buffer(struct ftdi_context *ftdi);
-    int ftdi_usb_purge_tx_buffer(struct ftdi_context *ftdi);
-    int ftdi_usb_purge_buffers(struct ftdi_context *ftdi);
+    FTDI_EXPORT int ftdi_usb_close(struct ftdi_context *ftdi);
+    FTDI_EXPORT int ftdi_usb_reset(struct ftdi_context *ftdi);
+    FTDI_EXPORT int ftdi_usb_purge_rx_buffer(struct ftdi_context *ftdi);
+    FTDI_EXPORT int ftdi_usb_purge_tx_buffer(struct ftdi_context *ftdi);
+    FTDI_EXPORT int ftdi_usb_purge_buffers(struct ftdi_context *ftdi);
 
-    int ftdi_set_baudrate(struct ftdi_context *ftdi, int baudrate);
-    int ftdi_set_line_property(struct ftdi_context *ftdi, enum ftdi_bits_type bits,
+    FTDI_EXPORT int ftdi_set_baudrate(struct ftdi_context *ftdi, int baudrate);
+    FTDI_EXPORT int ftdi_set_line_property(struct ftdi_context *ftdi, enum ftdi_bits_type bits,
                                enum ftdi_stopbits_type sbit, enum ftdi_parity_type parity);
-    int ftdi_set_line_property2(struct ftdi_context *ftdi, enum ftdi_bits_type bits,
+    FTDI_EXPORT int ftdi_set_line_property2(struct ftdi_context *ftdi, enum ftdi_bits_type bits,
                                 enum ftdi_stopbits_type sbit, enum ftdi_parity_type parity,
                                 enum ftdi_break_type break_type);
 
-    int ftdi_read_data(struct ftdi_context *ftdi, unsigned char *buf, int size);
-    int ftdi_read_data_set_chunksize(struct ftdi_context *ftdi, unsigned int chunksize);
-    int ftdi_read_data_get_chunksize(struct ftdi_context *ftdi, unsigned int *chunksize);
-
-    int ftdi_write_data(struct ftdi_context *ftdi, unsigned char *buf, int size);
-    int ftdi_write_data_set_chunksize(struct ftdi_context *ftdi, unsigned int chunksize);
-    int ftdi_write_data_get_chunksize(struct ftdi_context *ftdi, unsigned int *chunksize);
-
-    int ftdi_write_data_async(struct ftdi_context *ftdi, unsigned char *buf, int size);
-    void ftdi_async_complete(struct ftdi_context *ftdi, int wait_for_more);
-
-    int DEPRECATED(ftdi_enable_bitbang(struct ftdi_context *ftdi, unsigned char bitmask));
-    int ftdi_disable_bitbang(struct ftdi_context *ftdi);
-    int ftdi_set_bitmode(struct ftdi_context *ftdi, unsigned char bitmask, unsigned char mode);
-    int ftdi_read_pins(struct ftdi_context *ftdi, unsigned char *pins);
+    FTDI_EXPORT int ftdi_read_data(struct ftdi_context *ftdi, unsigned char *buf, int size);
+    FTDI_EXPORT int ftdi_read_data_set_chunksize(struct ftdi_context *ftdi, unsigned int chunksize);
+    FTDI_EXPORT int ftdi_read_data_get_chunksize(struct ftdi_context *ftdi, unsigned int *chunksize);
+
+    FTDI_EXPORT int ftdi_write_data(struct ftdi_context *ftdi, unsigned char *buf, int size);
+    FTDI_EXPORT int ftdi_write_data_set_chunksize(struct ftdi_context *ftdi, unsigned int chunksize);
+    FTDI_EXPORT int ftdi_write_data_get_chunksize(struct ftdi_context *ftdi, unsigned int *chunksize);
+
+    FTDI_EXPORT int ftdi_write_data_async(struct ftdi_context *ftdi, unsigned char *buf, int size);
+    FTDI_EXPORT void ftdi_async_complete(struct ftdi_context *ftdi, int wait_for_more);
+
+    FTDI_EXPORT int DEPRECATED(ftdi_enable_bitbang(struct ftdi_context *ftdi, unsigned char bitmask));
+    FTDI_EXPORT int ftdi_disable_bitbang(struct ftdi_context *ftdi);
+    FTDI_EXPORT int ftdi_set_bitmode(struct ftdi_context *ftdi, unsigned char bitmask, unsigned char mode);
+    FTDI_EXPORT int ftdi_read_pins(struct ftdi_context *ftdi, unsigned char *pins);
 
-    int ftdi_set_latency_timer(struct ftdi_context *ftdi, unsigned char latency);
-    int ftdi_get_latency_timer(struct ftdi_context *ftdi, unsigned char *latency);
+    FTDI_EXPORT int ftdi_set_latency_timer(struct ftdi_context *ftdi, unsigned char latency);
+    FTDI_EXPORT int ftdi_get_latency_timer(struct ftdi_context *ftdi, unsigned char *latency);
 
-    int ftdi_poll_modem_status(struct ftdi_context *ftdi, unsigned short *status);
+    FTDI_EXPORT int ftdi_poll_modem_status(struct ftdi_context *ftdi, unsigned short *status);
 
     /* flow control */
-    int ftdi_setflowctrl(struct ftdi_context *ftdi, int flowctrl);
-    int ftdi_setdtr_rts(struct ftdi_context *ftdi, int dtr, int rts);
-    int ftdi_setdtr(struct ftdi_context *ftdi, int state);
-    int ftdi_setrts(struct ftdi_context *ftdi, int state);
+    FTDI_EXPORT int ftdi_setflowctrl(struct ftdi_context *ftdi, int flowctrl);
+    FTDI_EXPORT int ftdi_setdtr_rts(struct ftdi_context *ftdi, int dtr, int rts);
+    FTDI_EXPORT int ftdi_setdtr(struct ftdi_context *ftdi, int state);
+    FTDI_EXPORT int ftdi_setrts(struct ftdi_context *ftdi, int state);
 
-    int ftdi_set_event_char(struct ftdi_context *ftdi, unsigned char eventch, unsigned char enable);
-    int ftdi_set_error_char(struct ftdi_context *ftdi, unsigned char errorch, unsigned char enable);
+    FTDI_EXPORT int ftdi_set_event_char(struct ftdi_context *ftdi, unsigned char eventch, unsigned char enable);
+    FTDI_EXPORT int ftdi_set_error_char(struct ftdi_context *ftdi, unsigned char errorch, unsigned char enable);
 
     /* set eeprom size */
-    void ftdi_eeprom_setsize(struct ftdi_context *ftdi, struct ftdi_eeprom *eeprom, int size);
+    FTDI_EXPORT void ftdi_eeprom_setsize(struct ftdi_context *ftdi, struct ftdi_eeprom *eeprom, int size);
 
     /* init and build eeprom from ftdi_eeprom structure */
-    void ftdi_eeprom_initdefaults(struct ftdi_eeprom *eeprom);
-    void ftdi_eeprom_free(struct ftdi_eeprom *eeprom);
-    int ftdi_eeprom_build(struct ftdi_eeprom *eeprom, unsigned char *output);
-    int ftdi_eeprom_decode(struct ftdi_eeprom *eeprom, unsigned char *output, int size);
+    FTDI_EXPORT void ftdi_eeprom_initdefaults(struct ftdi_eeprom *eeprom);
+    FTDI_EXPORT void ftdi_eeprom_free(struct ftdi_eeprom *eeprom);
+    FTDI_EXPORT int ftdi_eeprom_build(struct ftdi_eeprom *eeprom, unsigned char *output);
+    FTDI_EXPORT int ftdi_eeprom_decode(struct ftdi_eeprom *eeprom, unsigned char *output, int size);
 
     /* "eeprom" needs to be valid 128 byte eeprom (generated by the eeprom generator)
        the checksum of the eeprom is valided */
-    int ftdi_read_eeprom(struct ftdi_context *ftdi, unsigned char *eeprom);
-    int ftdi_read_chipid(struct ftdi_context *ftdi, unsigned int *chipid);
-    int ftdi_read_eeprom_getsize(struct ftdi_context *ftdi, unsigned char *eeprom, int maxsize);
-    int ftdi_write_eeprom(struct ftdi_context *ftdi, unsigned char *eeprom);
-    int ftdi_erase_eeprom(struct ftdi_context *ftdi);
+    FTDI_EXPORT int ftdi_read_eeprom(struct ftdi_context *ftdi, unsigned char *eeprom);
+    FTDI_EXPORT int ftdi_read_chipid(struct ftdi_context *ftdi, unsigned int *chipid);
+    FTDI_EXPORT int ftdi_read_eeprom_getsize(struct ftdi_context *ftdi, unsigned char *eeprom, int maxsize);
+    FTDI_EXPORT int ftdi_write_eeprom(struct ftdi_context *ftdi, unsigned char *eeprom);
+    FTDI_EXPORT int ftdi_erase_eeprom(struct ftdi_context *ftdi);
 
-    int ftdi_read_eeprom_location (struct ftdi_context *ftdi, int eeprom_addr, unsigned short *eeprom_val);
-    int ftdi_write_eeprom_location(struct ftdi_context *ftdi, int eeprom_addr, unsigned short eeprom_val);
+    FTDI_EXPORT int ftdi_read_eeprom_location (struct ftdi_context *ftdi, int eeprom_addr, unsigned short *eeprom_val);
+    FTDI_EXPORT int ftdi_write_eeprom_location(struct ftdi_context *ftdi, int eeprom_addr, unsigned short eeprom_val);
 
-    char *ftdi_get_error_string(struct ftdi_context *ftdi);
+    FTDI_EXPORT char *ftdi_get_error_string(struct ftdi_context *ftdi);
 
 #ifdef __cplusplus
 }

Reply via email to