I want to write my own plugin for a broker, so I took a look at the FXCM module in Zorro's source folder. However I'm not sure how I'm supposed to build this thing. Do I use Visual Studio C++? Which version? Is this really needed, because I don't have it:
#include "..\include\trading.h" // enter your path to trading.h
Also worrying is the line that imports fxcore.dll - what functions does it provide that I won't need in my own code?
You can use any IDE for developing (Codeblocks is my favorite for simple C++ projects), I think they put visual studio c++ as an example. In my case I have Visual C++ 2010 Express Edition, you can ask for a key to your mail to remove the 1 month trial.
The include.h header file comes with the installation of Zorro, I for instance have it at: C:\Program Files (x86)\Zorro\include\trading.h . It has all the "skeleton" for the trading (structs and definitions).
Concerning fxcore.dll, I think it is a library provided by FXCM as part of their API -so you instead should import the library provided by your broker- because (in my case) in the source file:
C:\Program Files (x86)\Zorro\Source\FXCMplugin.cpp
There are these lines:
using namespace FXCore;
ITradeDeskAutPtr g_pTradeDesk = 0;
(...)
void FXCM_Logout()
{
try {
g_pTradeDesk->Logout();
(...)
Which seems to me this:
using namespace FXCore: Here it is using functions from a namespace that has a suspicious name

I guess that from FXCM
ITradeDeskAutPtr: An interface (if you don't know what it is consider like a "wrapper" to other functions) pointer to an FXCM object.
g_pTradeDesk->Logout(); : Here it is logging out using one of the functions provided by FXCM.
In a nutshell, you have to make like a bridge that connects Zorro to the Broker. On the Zorro side you have the 9 functions to implement and that you will export to a dll. In these functions you "talk" to the broker API.
On the broker side, you have the API. Their API may be more or less transparent to you (ie: they may provide some wrapper functions like in the example with FXCM) or not.
Note: Transparent means that the functions are like a black-box, ie you don't have to mess too much with their API internal representation. When I heard it, I thought that transparent was more like white-box. Funny.