I recently upgraded a c++ Thrift project using TNonBlockingServer from VS2010 to VS2013, thrift going from 0.9.0 to 0.9.2, and I downloaded all latest versions of dependencies. It turns out I was unable to link the latest Libevent (2.0.22) release, and I had to compile 2.0.21. Is it a known behavior ? Thanks.
Alexandre -----Message d'origine----- De : Randy Abernethy [mailto:[email protected]] Envoyé : mercredi 24 juin 2015 03:24 À : [email protected] Objet : Re: Advice for a possibly unique Thrift build environment? Ah, I see, sounds like a good approach. If it built your are on the other side! Good luck with Thrift and let us know how things go. -Randy On Tue, Jun 23, 2015 at 6:07 PM, Chris Seto <[email protected]> wrote: > Hi Randy, > > The one thing to remember is that I'm not building for a Windows > target, I'm building for a Linux target using a cross-compiler running on > Windows. > So, I'm not sure how to handle some of the config values, since I > don't really know what the cross compiler supports. > > That said, I did include the stock config file generated by > ./configure on Ubuntu and the project as a whole did actually build. > Hopefully a lot of those config items are correct or unused in such a > simple implementation of the Thrift C++ server. > ====== > Chris Seto > http://www.chrisseto.com > ====== > On 6/23/2015 1:55 PM, Randy Abernethy wrote: > >> Hey Chris, >> >> Yes, configure gens the config.h on *.nix. >> >> thrift@ubuntu:~/thrift$ head config.h >> /* config.h. Generated from config.hin by configure. */ >> /* config.hin. Generated from configure.ac by autoheader. */ >> >> >> #ifndef CONFIG_H >> #define CONFIG_H >> >> >> /* Define if the AI_ADDRCONFIG symbol is unavailable */ >> /* #undef AI_ADDRCONFIG */ >> >> >> On Windows there is a static config.h which should be used (you will >> suffer mightily if you try to use a Linux config on Windows [not that >> I have, er, tried...]): >> >> thrift@ubuntu:~/thrift$ tail lib/cpp/src/thrift/windows/config.h >> // windows >> #include <Winsock2.h> >> #include <ws2tcpip.h> >> #ifdef _WIN32_WCE >> #pragma comment(lib, "Ws2.lib") >> #else >> #pragma comment(lib, "Ws2_32.lib") >> #pragma comment(lib, "advapi32.lib") // For security APIs in >> TPipeServer >> #endif >> #endif // _THRIFT_WINDOWS_CONFIG_H_ >> >> The above config should be included when _WIN32 is defined per below: >> >> thrift@ubuntu:~/thrift$ tail -5 lib/cpp/src/thrift/thrift-config.h >> #ifdef _WIN32 >> #include <thrift/windows/config.h> >> #else >> #include <thrift/config.h> >> #endif >> >> ...and the whole thing starts here: >> >> thrift@ubuntu:~/thrift$ head -29 lib/cpp/src/thrift/Thrift.h | tail >> #ifndef _THRIFT_THRIFT_H_ >> #define _THRIFT_THRIFT_H_ 1 >> >> #include <thrift/transport/PlatformSocket.h> >> >> #include <thrift/thrift-config.h> >> >> #include <stdio.h> >> #include <assert.h> >> >> Further, be advised that there is a Visual Studio solution for >> libthrift and libthriftnb here: >> thrift@ubuntu:~/thrift$ ls -l lib/cpp/*.sln >> -rw-rw-r-- 1 thrift thrift 3625 Jun 22 14:41 lib/cpp/thrift.sln >> >> This solution is a good place to figure out what you might need to be >> building (and not bad for building the libs/dlls should you change >> tack). >> >> The thrift build system is slowly migrating to cmake, which is >> particularly Windows friendly. This: >> >> thrift@ubuntu:~/thrift$ cmake . >> ... >> thrift@ubuntu:~/thrift$ make >> ... >> >> will build the compiler and C++ libs on Linux. Do not think cmake is >> tweaked to run on Windows directly yet though. Roger has posted some >> nice notes here: >> >> https://github.com/apache/thrift/blob/1568aef7d499153469131449ec68299 >> 8598f0d3c/build/cmake/README.md >> >> Also there is a pre built thrift compiler for Windows here: >> https://thrift.apache.org/download >> >> Hope this helps, >> Randy >> >> P.S. I am faking this until someone who knows what they're talking >> about, like Roger or Jake, steps in... >> >> >> On Tue, Jun 23, 2015 at 1:15 PM, Chris Seto <[email protected]> wrote: >> >> Hi Randy, >>> >>> Thanks, this is exactly the information I needed. For clarification, >>> it looks like I obviously need the directory: >>> thrift-0.9.2\lib\cpp\src\thrift >>> , though is there anything else that might be more obscure? >>> >>> The second question I have is in regards to the config.h file. This >>> file is included by thrift-0.9.2\lib\cpp\src\thrift\thrift-config.h, >>> and it is not normally present in the source tree. It looks like >>> it's probably a product of ./configure. What's the best way to get >>> this file? Should I simply ./configure on my Linux target, then copy >>> the file over and edit, or is there a better way? >>> >>> Otherwise, the process seems fairly typical. The config file was the >>> big catch when I tried to include boiler plate files off the bat. >>> >>> Also, thanks Jens as well. I looked through the tutorials quite a >>> bit, but the issue was that they don't talk a lot about including >>> the Thrift library files into your project, only about using the IDL >>> format. >>> >>> ====== >>> Chris Seto >>> http://www.chrisseto.com >>> ====== >>> >>> On 6/23/2015 12:51 PM, Randy Abernethy wrote: >>> >>> Hi Chris, >>>> >>>> I often build Thrift C++ apps on Windows without precompiled libs. >>>> The first time I did it I just added the obvious cpp files from the >>>> thrift cpp lib to my project, built, read through the linker >>>> errors, grepped around, added some more cpp files, and so on. It is >>>> pretty easy to pull together the necessary cpp source for a client, >>>> a bit more work for a server but certainly doable. You learn a lot >>>> in the process too. Once you have the boilerplate list of files you >>>> generally depend on it is pretty routine. >>>> Makes debugging easy too, no need to configure debug and release >>>> libs, never any problems with the IDE figuring out where the source >>>> is when you want to step into code, etc. I also found building some >>>> dependencies on windows rough, in particular libevent. It was much >>>> easier to just compile the bits of lib event I needed without >>>> trying to make the entire thing work. >>>> >>>> At the end of the day I use static libs most of the time but just >>>> want to let you know that compiling the Thrift sources into your >>>> executable directly is no big hardship on any platform. >>>> >>>> Best, >>>> Randy >>>> >>>> On Tue, Jun 23, 2015 at 11:04 AM, Chris Seto <[email protected]> >>>> wrote: >>>> >>>> Hi all, >>>> >>>>> I am a beginner to the Thrift framework, and I'm looking into >>>>> using Thrift on a project which is half embedded (actually C++ on >>>>> embedded Linux) and half C#. Obviously the C# side is standard >>>>> affair, so I'm not worried about it at all. >>>>> >>>>> On the embedded side, I am running a little embedded Linux >>>>> computer running Angstrom Linux. While I can build either natively >>>>> or on a desktop Linux target, I actually have been cross compiling >>>>> my application on my Windows machine With the GCC-Linaro >>>>> toolchain. >>>>> >>>>> Obviously, I can run the thrift compiler on my Windows machine, so >>>>> generating the subs isn't a big deal. >>>>> >>>>> I'm more wondering how to include the Thrift libraries in the project. >>>>> I >>>>> do have an Ubuntu Linux machine which has Thrift "installed", but >>>>> what exactly is the Thrift installation doing, and what is the >>>>> best way to include Thrift into my existing C++ project? Is there >>>>> a clean way that I could compile Thrift libs on my Ubuntu machine, >>>>> then link against them on my Windows build environment? Similarly, >>>>> would it be possible for me to simply include the libs as source >>>>> files in my existing C++ project? >>>>> >>>>> Thanks >>>>> -- >>>>> >>>>> >>>>> >
