hello Amira,
There is no difference for irace if your algorithm was programmed in C++, Java, or any other language. The target runner script is the script that acts as an intermediary between irace and your algorithm. The script must only take into account the input format in which irace will provide you the instance, seed and parameter values you have to execute your algorithm with, and the output format in which irace expects you to return the result of the execution. Please check section 5.2 of the user to get more information on how to define a proper target runner. The package comes with templates for windows and linux, so you can take the one for windows and modify it to execute your algorithm.
If you want to automatically tune your algorithm you will need to define a way to pass the parameter values to your algorithm when you make the execution call in the target runner. This can be done in different ways, but the most common would be to pass the parameter values as arguments. For example, if your algorithm executable is called my_sa.exe you can execute it like this:
my_sa.exe --instance instance/instance1.txt --evaluations 10000 --t_initial 100
you will need to parse these arguments in your main to set the parameter values that these arguments indicate. Then, in the target runner, you will have to build this execution line (like in the examples that are in the package). The --flag argument will be automatically passed by irace if you configure them correctly in the parameter file. For example, the parameter.txt file should be:
# param_name param_flag param_type param_domain
temp_initial "--t_initial " r (1, 100)
Check section 5.1 of the user guide for more details on defining the parameters.
I hope this can help you, and let us know if you have any doubts or problems.
Bests,