WinXP VC++ install problems

Hi,

I am a reasonably seasoned Root/Linux user, but I am going insane trying to do the most rudimentary things under WinXP.

I downloaded the V5.14 release binary using the windows installer (I have Visual Studio 20065 installed). I can start root just fine, but when I try to load a subroutine using .L I get the following error:

root [2] .L C:\Documents and Settings\Smith\My Documents\NOVA\Leak Tester\Code$
#error win32api.dll is not ready. Run ‘setup.bat’ in %CINTSYSDIR%\lib\win32api d
irectory if you use WinNT/95.
*** Interpreter error recovered ***

When I go to C:\root\cint\lib\win32api and run setup.bat I get the following error, because it is trying to find a directory that doesn’t exist.

C:\root\cint\lib\win32api>setup.bat

C:\root\cint\lib\win32api>move \include\windows.h \include_windows.h
The system cannot find the file specified.

C:\root\cint\lib\win32api>move \include\winsock.h \include_winsock.h
The system cannot find the file specified.

C:\root\cint\lib\win32api>makecint -mk Makewin -dl win32api.dll -h +P cintwin.h
-P winfunc.h -cint -Z0
################################################################

makecint : interpreter-compiler for cint (Windows VisualC++ version)

Copyright© 1995~2004 Masaharu Goto (cint@pcroot.cern.ch)

(cint mailing list 'cint@root.cern.ch’)

################################################################
Makewin is created. Makecint success.
Do ‘make -f Makewin’ to compile the object

C:\root\cint\lib\win32api>nmake -f Makewin CFG=“win32api - Win32 Release”
‘nmake’ is not recognized as an internal or external command,
operable program or batch file.

C:\root\cint\lib\win32api>del \include\win32api.dll
The system cannot find the file specified.

C:\root\cint\lib\win32api>move Release\win32api.dll \include\win32api.dll
The system cannot find the file specified.

C:\root\cint\lib\win32api>del win32api.lib
Could Not Find C:\root\cint\lib\win32api\win32api.lib

C:\root\cint\lib\win32api>move Release\win32api.lib win32api.lib
The system cannot find the file specified.

C:\root\cint\lib\win32api>move \include_windows.h \include\windows.h
The system cannot find the file specified.

C:\root\cint\lib\win32api>move \include_winsock.h \include\winsock.h
The system cannot find the file specified.

C:\root\cint\lib\win32api>echo off
Could Not Find C:\root\cint\lib\win32api\rem
Could Not Find C:\root\cint\lib\win32api\makerem
C:\root\cint\lib\win32api>

Why does this not work? When I tried adding a + or ++ to the end to usa ACLIC, it could not handle the spaces in the path name. I could not find the right syntax. What is the correct syntax and do I have to do anything else to use ACLIC? I have Visual Studio 2005 installed on the machine.

Thanks in advance for the help.

Alex

There are TWO issues:

  1. ROOT doesn’t handle properly the file names with space in (on either platform). To handle it properly one has to surround the file name with the quotation symbols.

This means your working directory may not contain the “blanks”. I.e. you can not use the “Documents and Settings” as your working directory.

  1. To use the MS Studio compiler / utility (nmake for example) one has to either “register” the Studio environment variables (PATH, LIB , INCLUDE etc) during the Studio installation or set it “by hand”.
    To set it “by hand” one should invoke either “vsvarsall.bat” or “vsvars32.bat” batch file. It can be found under your Studio directory tree

Check the Web sites:
root.cern.ch/root/HowtoWindows.html
muenster.de/~naumana/root.html
gentit.home.cern.ch/gentit/rootandvisual7/

also.

Hi,

I found the documentation on the link

gentit.home.cern.ch/gentit/rootandvisual7/

to be quite helpful, and I got the “muster” example to build and I can do “start without debugging” and it opens the root window and prompt. From there I am not sure how to use it.

Now for the dumb question: this is my first use of VC++ and root on windows.

  1. How do I load the TMuster class into root and use it?
    In linux I would have a .so file to load with gSystem->Load(), but I see no such thing here.

  2. Next question: I have some C routines in a .dll that came with a DAQ card. How do I make it so I can call these from Root under WindowsXP? Presumably I need to add that dictionary stuff so that I can use the routines.

This is the whole reason I am forced to use windows. I miss my linux command line!

Thanks,

Alex

Not sure if this helps, but I did just install Cygwin. I’m not really sure how Cygwin and VC++ interact and have not found any good docs on that yet. If it makes things more Linux-like that is good by me. I would be very happy to dispense with the whole visual studio environment if possible.

[quote=“smith277”]Now for the dumb question: this is my first use of VC++ and root on windows.

  1. How do I load the TMuster class into root and use it?
    In linux I would have a .so file to load with gSystem->Load(), but I see no such thing here. [/quote]
    It is exactly the same. If you provide the DLL / shared library file name in full, i.e. with some extension “so”, “dll” alike it is to be used “as is” otherwise the current system default is to be used. This means
    gSystem->Load(“Muster”) is to load “Muster.dll” file on windows
    and
    "muster.so" or “libmuster.so” whatever will be found first on Linux.

[quote=“smith277”]2) Next question: I have some C routines in a .dll that came with a DAQ card. How do I make it so I can call these from Root under WindowsXP? Presumably I need to add that dictionary stuff so that I can use the routines.
[/quote]
I think the simplest way to manage things is creating the proxy C++ class and create the RootCint dictionary for that proxy.
For example, you create the proxy class: DAQDriver.h: class DAQDriver { public: DAQDriver(); void InitDriver(); UInt_t GetRegister() const; };It has no dependency of your DAQ driver and it is trivial to create the RootCint dictionary for this class. (The dictionary needs to see the header file only)
From within your class implementation “DAQDriver.cxx” you are free to call your C routine. There is no special Root/Cint constrain. May be you should provide the proxy DAQDriver method for each subroutine from your driver kit.

I would stop at this point because it is hard going further without the REAL task in hand.

It is not really clear what do you mean. You can find and download plenty of the different well-known shell implementations for Windows.
cygwin.com/
ddj.com/dept/linux/192503752
microsoft.com/downloads/deta … layLang=en
microsoft.com/technet/intero … 35int.mspx

Hi Alex,

a possibly simpler alternative is to edit the header files for your .DLLs (yes, after you copied them :slight_smile: and hide system includes from rootcint (the dictionary generator) by surrounding them with #ifndef __MAKECINT__ #include "fancyfile.h" #endifThese include files usually define additional types; rootcint often needs them (e.g. as function parameter types), so you will have to re-declare them for CINT as #ifdef __MAKECINT__ typedef unsigned long MyHandle_t; #endifThere is no need to re-declare structs that are only passed as pointers: a C-like “struct MyStruct*” parameter type is a forward declaration by itself.

Axel.

Hi,

Sorry to be mixing two separate sets of questions, but back to the original TMuster example, I tried loading the .dll that was created by following that tutorial and I get the following error:

root [0] gSystem->Load("C:\NOVA\LeakTester\Code\muster\lib\libMuster.dll$
C:\NOVA\LeakTester\Code\muster\lib\libMuster.dll: The specified procedure could
not be found.
Load Error: Failed to load Dynamic link library C:\NOVA\LeakTester\Code\muster\l
ib\libMuster.dll
(int)(-1)
*** Interpreter error recovered ***

When I run root from windows instead of cygwin, a window pops up with some additional info (here I type, since there is no way to copy&paste:

“The procedure entry point ?SavePrimitive@TObject@@UAEXAAV?$basic_ofstream@DU?$char_traits@D@std@@@PBD@Z could not be located in the dynamic link library libCore.dll”

I am including an attached tarball of the muster directory.
muster.tar.gz (1.39 MB)

[quote=“smith277”]Not sure if this helps, but I did just install Cygwin. I’m not really sure how Cygwin and VC++ interact and have not found any good docs on that yet. If it makes things more Linux-like that is good by me. I would be very happy to dispense with the whole visual studio environment if possible.[/quote]They do not interacting each other. Cygwin can invoke any Windows executable including VC++ staff.

As usually one has to provide either the executable FULL PATH or the directory where your executable is stored in must be on the PATH env variable lists.

Check the cygwin shortcut on your desktop to see this icon is to invoke something like “C:\cygwin\cygwin.bat “ file. The file in question looks like this

@echo off C: chdir C:\cygwin\bin bash --login –iTo add the Visual Studio utilities one may edit this file as follows:[code]@echo off
C:
call “C:\Program Files\Microsoft Visual Studio 8\VC\vcvarsall.bat” x86
chdir C:\cygwin\bin

bash --login -i[/code]

[quote=“smith277”]Hi,

Sorry to be mixing two separate sets of questions, but back to the original TMuster example, I tried loading the .dll that was created by following that tutorial and I get the following error:

root [0] gSystem->Load("C:\NOVA\LeakTester\Code\muster\lib\libMuster.dll$
C:\NOVA\LeakTester\Code\muster\lib\libMuster.dll: The specified procedure could
not be found.
Load Error: Failed to load Dynamic link library C:\NOVA\LeakTester\Code\muster\l
ib\libMuster.dll
(int)(-1)
*** Interpreter error recovered ***

When I run root from windows instead of cygwin, a window pops up with some additional info (here I type, since there is no way to copy&paste:

“The procedure entry point ?SavePrimitive@TObject@@UAEXAAV?$basic_ofstream@DU?$char_traits@D@std@@@PBD@Z could not be located in the dynamic link library libCore.dll”

I am including an attached tarball of the muster directory.[/quote]
I have downloaded your tar file, deleted TMusterdict.* file and found no problem[code]muster>nmake -f makefile.mak

Microsoft ® Program Maintenance Utility Version 8.00.50727.42
Copyright © Microsoft Corporation. All rights reserved.

    cl  -D_MT -D_DLL -MDd -EHsc  -nologo -G5 -GR -MD -DWIN32  -DVISUAL_CPLUSPLUS -D_WINDOWS -IE:\cygwin\home\fine\work\ROOT\5.14c\root/include -O2 -c TMuste

r.cpp
cl : Command line warning D9025 : overriding ‘/MDd’ with '/MD’
cl : Command line warning D9002 : ignoring unknown option '-G5’
TMuster.cpp
"Deleting dictionary…"
Could Not Find E:\Documents and Settings\fine\My Documents\ROOT\expert\12.04.2007\muster\muster\TMusterdict.h
"Generating dictionary …"
cl -D_MT -D_DLL -MDd -EHsc -nologo -G5 -GR -MD -DWIN32 -DVISUAL_CPLUSPLUS -D_WINDOWS -IE:\cygwin\home\fine\work\ROOT\5.14c\root/include -O2 -c TMuste
rdict.cpp
cl : Command line warning D9025 : overriding ‘/MDd’ with '/MD’
cl : Command line warning D9002 : ignoring unknown option '-G5’
TMusterdict.cpp
"Linking libMuster.dll …"
BINDEXPLIB libMuster TMuster.obj TMusterdict.obj > libMuster.def
lib -nologo -MACHINE:IX86 TMuster.obj TMusterdict.obj -def:libMuster.def -out:libMuster.lib
Creating library libMuster.lib and object libMuster.exp
link /INCREMENTAL:NO /NOLOGO -entry:_DllMainCRTStartup@12 -dll -opt:ref /INCREMENTAL:NO /NOLOGO -subsystem:console,5.0 -nologo TMuster.obj TMusterdict
.obj libMuster.exp E:\cygwin\home\fine\work\ROOT\5.14c\root/lib/libCore.lib E:\cygwin\home\fine\work\ROOT\5.14c\root/lib/libCint.lib E:\cygwin\home\fine\work\R
OOT\5.14c\root/lib/libHist.lib E:\cygwin\home\fine\work\ROOT\5.14c\root/lib/libGraf.lib E:\cygwin\home\fine\work\ROOT\5.14c\root/lib/libGraf3d.lib E:\cygwin\h
ome\fine\work\ROOT\5.14c\root/lib/libGpad.lib E:\cygwin\home\fine\work\ROOT\5.14c\root/lib/libTree.lib E:\cygwin\home\fine\work\ROOT\5.14c\root/lib/libRint.lib
E:\cygwin\home\fine\work\ROOT\5.14c\root/lib/libPostscript.lib E:\cygwin\home\fine\work\ROOT\5.14c\root/lib/libMatrix.lib E:\cygwin\home\fine\work\ROOT\5.14c
root/lib/libPhysics.lib kernel32.lib ws2_32.lib mswsock.lib advapi32.lib bufferoverflowu.lib user32.lib gdi32.lib comdlg32.lib winspool.lib MSVCPRT.LIB -out:li
bMuster.dll
"libMuster.dll done"
cl -D_MT -D_DLL -MDd -EHsc -nologo -G5 -GR -MD -DWIN32 -DVISUAL_CPLUSPLUS -D_WINDOWS -IE:\cygwin\home\fine\work\ROOT\5.14c\root/include -O2 -c main.c
pp
cl : Command line warning D9025 : overriding ‘/MDd’ with '/MD’
cl : Command line warning D9002 : ignoring unknown option '-G5’
main.cpp
"Linking muster.exe …“
link -opt:ref /INCREMENTAL:NO /NOLOGO -subsystem:console,5.0 -nologo main.obj TMuster.obj TMusterdict.obj E:\cygwin\home\fine\work\ROOT\5.14c\root/lib/
libCore.lib E:\cygwin\home\fine\work\ROOT\5.14c\root/lib/libCint.lib E:\cygwin\home\fine\work\ROOT\5.14c\root/lib/libHist.lib E:\cygwin\home\fine\work\ROOT\5.
14c\root/lib/libGraf.lib E:\cygwin\home\fine\work\ROOT\5.14c\root/lib/libGraf3d.lib E:\cygwin\home\fine\work\ROOT\5.14c\root/lib/libGpad.lib E:\cygwin\home\fin
e\work\ROOT\5.14c\root/lib/libTree.lib E:\cygwin\home\fine\work\ROOT\5.14c\root/lib/libRint.lib E:\cygwin\home\fine\work\ROOT\5.14c\root/lib/libPostscript.lib
E:\cygwin\home\fine\work\ROOT\5.14c\root/lib/libMatrix.lib E:\cygwin\home\fine\work\ROOT\5.14c\root/lib/libPhysics.lib kernel32.lib ws2_32.lib mswsock.lib adv
api32.lib bufferoverflowu.lib user32.lib gdi32.lib comdlg32.lib winspool.lib MSVCPRT.LIB -out:muster.exe
Creating library muster.lib and object muster.exp
"muster.exe done”

E:\Documents and Settings\fine\My Documents\ROOT\expert\12.04.2007\muster\muster>root.exe
** $Id: TGQt.cxx,v 1.148 2007/04/06 17:49:52 fine Exp $ this=01A25E60


  •                                     *
    
  •    W E L C O M E  to  R O O T       *
    
  •                                     *
    
  • Version 5.14/00c 12 February 2007 *
  •                                     *
    
  • You are welcome to visit our Web site *
  •      http://root.cern.ch            *
    
  •                                     *
    

Compiled on 21 February 2007 for win32.

CINT/ROOT C/C++ Interpreter version 5.16.16, November 24, 2006
Type ? for help. Commands must be C++ statements.
Enclose multiple statements between { }.

Welcome to the ROOT tutorials

Type “.x demos.C” to get a toolbar from which to execute the demos

Type “.x demoshelp.C” to see the help window

root [0] gSystem->Load(“libMuster”)
(int)0
root [1] TMuster a
root [2][/code]Make sure you did download VC++ v8.0 version of ROOT binaries

Hi Valeri,

I tried doing what you did but get an error during the link (session included below). I deleted the TMusterdict.* files first. The version of Root binary that I downloaded was the one labeled

“WindowsXP/NT/w2000 with VC++ 7.1 (runs with VC++6 and VC++8.0), version 5.14/00 (42.8 MB).”

Just to be absolutely sure I was repeating your test I redownloaded the tar.gz from my previous post.

I am attaching a list of my environment variables from printenv.

Here is the error:

$ nmake -f makefile.mak

Microsoft ® Program Maintenance Utility Version 8.00.50727.42
Copyright © Microsoft Corporation. All rights reserved.

Linking libMuster.dll …
BINDEXPLIB libMuster TMuster.obj TMusterdict.obj > libMuster.def
lib -nologo -MACHINE:IX86 TMuster.obj TMusterdict.obj -def:libMuster.def
-out:libMuster.lib
Creating library libMuster.lib and object libMuster.exp
link /INCREMENTAL:NO /NOLOGO -entry:_DllMainCRTStartup@12 -dll -opt:ref
/INCREMENTAL:NO /NOLOGO -subsystem:console,5.0 -nologo TMuster.obj TMusterdict
.obj libMuster.exp c:\root/lib/libCore.lib c:\root/lib/libCint.lib c:\root/lib/
libHist.lib c:\root/lib/libGraf.lib c:\root/lib/libGraf3d.lib c:\root/lib/libG
pad.lib c:\root/lib/libTree.lib c:\root/lib/libRint.lib c:\root/lib/libPostscri
pt.lib c:\root/lib/libMatrix.lib c:\root/lib/libPhysics.lib kernel32.lib ws2_3
2.lib mswsock.lib advapi32.lib bufferoverflowu.lib user32.lib gdi32.lib comdlg32
.lib winspool.lib MSVCPRT.LIB -out:libMuster.dll
/usr/bin/link: invalid option – e
Try `/usr/bin/link --help’ for more information.
NMAKE : fatal error U1077: ‘C:\cygwin\bin\link.EXE’ : return code ‘0x1’
Stop.
environment_vars.txt (4.01 KB)

Hi,

It is the wrong link.exe !
you should rename ‘C:\cygwin\bin\link.EXE’ to ‘C:\cygwin\bin\oldlink.EXE’ or any other name, in order to pick the link.exe from Visual C++.
i.e. typing “link” should display something like:

Microsoft ® Incremental Linker Version 8.00.50727.762
Copyright © Microsoft Corporation. All rights reserved.

Cheers,
Bertrand.

Hi Bertrand,

Your fix seems to have worked for the link (output below), but now when I try to load it in root, I am not successful:

Thanks for the help! I’m almost there…

Alex

$ pwd
/home/Smith/muster

Smith@nova-ltdaq ~/muster
$ root


  •                                     *
    
  •    W E L C O M E  to  R O O T       *
    
  •                                     *
    
  • Version 5.14/00 14 December 2006 *
  •                                     *
    
  • You are welcome to visit our Web site *
  •      [root.cern.ch](http://root.cern.ch)            *
    
  •                                     *
    

Compiled on 14 December 2006 for win32.

CINT/ROOT C/C++ Interpreter version 5.16.16, November 24, 2006
Type ? for help. Commands must be C++ statements.
Enclose multiple statements between { }.
root [0] gSystem->Load(“libMuster”);
C:\cygwin\home\Smith\muster\libMuster.dll: The specified module could not be fou
nd.
Load Error: Failed to load Dynamic link library C:\cygwin\home\Smith\muster\libM
uster.dll
*** Interpreter error recovered ***
root [1] .q

Smith@nova-ltdaq ~/muster
$ ls -str
total 4087
32 main.cpp 0 Debug
32 LinkDef.h 32 TMuster.obj
32 makefile.mak 32 environment_vars.txt
32 Makefile 32 libMuster.lib
32 muster.vcproj.7.10.old 32 libMuster.exp
32 TMuster.h 32 libMuster.def
32 TMuster.cpp 96 TMusterdict.obj
32 Makefile.linux 32 TMusterdict.h
32 UpgradeLog.XML 32 TMusterdict.cpp
32 muster.sln 32 muster.lib
32 muster.vcproj 32 muster.exp
32 muster.vcproj.NOVA-LTDAQ.Smith.user 32 muster.exe.manifest
32 muster.suo 23 muster.exe
3136 muster.ncb 32 main.obj
0 lib 32 libMuster.dll.manifest
0 bin 32 libMuster.dll
0 _UpgradeReport_Files

Smith@nova-ltdaq ~/muster

Here is the output from the link:

$ nmake -f makefile.mak

Microsoft ® Program Maintenance Utility Version 8.00.50727.42
Copyright © Microsoft Corporation. All rights reserved.

Deleting dictionary…
Could Not Find C:\cygwin\home\Smith\muster\TMusterdict.h
Generating dictionary …
cl -D_MT -D_DLL -MDd -EHsc -nologo -G5 -GR -MD -DWIN32 -DVISUAL_CPLUS
PLUS -D_WINDOWS -Ic:\root/include -O2 -c TMusterdict.cpp
cl : Command line warning D9025 : overriding ‘/MDd’ with '/MD’
cl : Command line warning D9002 : ignoring unknown option '-G5’
TMusterdict.cpp
Linking libMuster.dll …
BINDEXPLIB libMuster TMuster.obj TMusterdict.obj > libMuster.def
lib -nologo -MACHINE:IX86 TMuster.obj TMusterdict.obj -def:libMuster.def
-out:libMuster.lib
Creating library libMuster.lib and object libMuster.exp
link /INCREMENTAL:NO /NOLOGO -entry:_DllMainCRTStartup@12 -dll -opt:ref
/INCREMENTAL:NO /NOLOGO -subsystem:console,5.0 -nologo TMuster.obj TMusterdict
.obj libMuster.exp c:\root/lib/libCore.lib c:\root/lib/libCint.lib c:\root/lib/
libHist.lib c:\root/lib/libGraf.lib c:\root/lib/libGraf3d.lib c:\root/lib/libG
pad.lib c:\root/lib/libTree.lib c:\root/lib/libRint.lib c:\root/lib/libPostscri
pt.lib c:\root/lib/libMatrix.lib c:\root/lib/libPhysics.lib kernel32.lib ws2_3
2.lib mswsock.lib advapi32.lib bufferoverflowu.lib user32.lib gdi32.lib comdlg32
.lib winspool.lib MSVCPRT.LIB -out:libMuster.dll
libMuster.dll done
Linking muster.exe …
link -opt:ref /INCREMENTAL:NO /NOLOGO -subsystem:console,5.0 -nologo ma
in.obj TMuster.obj TMusterdict.obj c:\root/lib/libCore.lib c:\root/lib/libCint.
lib c:\root/lib/libHist.lib c:\root/lib/libGraf.lib c:\root/lib/libGraf3d.lib
c:\root/lib/libGpad.lib c:\root/lib/libTree.lib c:\root/lib/libRint.lib c:\root
/lib/libPostscript.lib c:\root/lib/libMatrix.lib c:\root/lib/libPhysics.lib ker
nel32.lib ws2_32.lib mswsock.lib advapi32.lib bufferoverflowu.lib user32.lib gd
i32.lib comdlg32.lib winspool.lib MSVCPRT.LIB -out:muster.exe
Creating library muster.lib and object muster.exp
muster.exe done

Can you try the following command:

/home/Smith/muster>mt -nologo -manifest libMuster.dll.manifest -outputresource:libMuster.dll;2

This will embed the manifest file in the dll.
If it works, just modify the makefile.mk as following:

[code]
$(PROGRAMSO): $(OBJS)
@echo "Linking $(PROGRAMSO) …"
BINDEXPLIB $* $(OBJS) > $.def
lib -nologo -MACHINE:IX86 $(OBJS) -def:$
.def $(OutPutOpt)$(PROGRAMLIB)
$(LD) $(SOFLAGS) $(LDFLAGS) $(OBJS) $*.exp $(LIBS) $(OutPutOpt)$(PROGRAMSO)
mt -nologo -manifest $@.manifest -outputresource:$@;2
@echo “$(PROGRAMSO) done”

$(PROGRAM): main.$(ObjSuf) $(OBJS)
@echo “Linking $(PROGRAM) …”
$(LD) $(LDFLAGS) main.$(ObjSuf) $(OBJS) $(LIBS) $(OutPutOpt)$(PROGRAM)
mt -nologo -manifest $@.manifest -outputresource:$@;1
@echo “$(PROGRAM) done”
[/code](add mt commands in the process)

Cheers,
Bertrand.

Hi Bertrand,

Here is the error I get when I try running that command:

Thanks,

Alex

Smith@nova-ltdaq ~/muster
$ mt -nologo -manifest libMuster.dll.manifest -outputresource:libMuster.dll;2
mt: unknown option – n
usage: mt [-V] [-f device] operation [count]
bash: 2: command not found

Smith@nova-ltdaq ~/muster
$ pwd
/home/Smith/muster

Smith@nova-ltdaq ~/muster
$ which mt
/usr/bin/mt

Wrong one (again). Should be:

(pcbb64) [57] which mt
/cygdrive/c/Program Files (x86)/Microsoft Visual Studio 8/VC/BIN/mt

(pcbb64) [58] mt
Microsoft ® Manifest Tool version 5.2.3790.2075
Copyright © Microsoft Corporation 2005.
All rights reserved.
[…]

Bertrand.

Hello, your trouble due your attempt to “kill many birds with one stone”. I know you want to move one faster but you are slow down yourself.

You work from with CYGWIN command prompt. As result you are constantly facing the clash between Microsoft and Unix utility names.

Upon Studio installation you should be able to find the

"Microsoft Visual Studio 2005/Visual Studio tools/Visual Studio 2005 Command prompt" Try to get your DLL built properly from there then first then switch to Cygwin shell if any.