I managed to build it with MSVC after tinkering with the code a little. Did you guys make any progress in making tor a library? It seems like I can directly call functions like handle_getinfo_helper in control.c to control tor.
//application_main.cpp //Application that starts tor in a new thread in the same process #include <future> #include <iostream> #include "libtor.h" using namespace std; int main(int argc, char *argv[]){ auto tor_return=async(launch::async,start_tor_main,argc, argv); while (tor_return.wait_for(chrono::seconds(2))!=future_status::ready){ char *ans; const char *errmsg; handle_getinfo_helper(NULL, "config/names", &ans, &errmsg); cout<<"application is running! ["<<ans<<"]"<<endl; } return tor_return.get(); }
//libtor.h //Duplicates the definitions in Tor. If there is a way around this, do tell! :) extern "C"{ int start_tor_main(int argc, char *argv[]);//Tor's main() is renamed to start_tor_main int handle_getinfo_helper(void *control_conn, const char *question, char **answer, const char **err_out); }
It seems like handle_getinfo_helper is called asynchronously by tor whenever a GETINFO is recieved on the control port so I don't need locking/synchronization. Can someone confirm this?
On Sun, Apr 7, 2013 at 4:40 AM, Gisle Vanem gvanem@broadpark.no wrote:
I didn't read the original messege on this, but you have problem building Tor and it's libs using MSVC? If so, you could try my "GNU make" based system for MingW + MSVC here: http://home.broadpark.no/~**gvanem/misc/#torhttp://home.broadpark.no/~gvanem/misc/#tor http://home.broadpark.no/~**gvanem/misc/tor-windows.ziphttp://home.broadpark.no/~gvanem/misc/tor-windows.zip
I just tested it with today's Tor Git-repo. And it works for me.
--gv