Do I have to create a C# DLL to call C++ DLL or I can call it directly from my C# application?
You can call it directly with PInvoke and the DllImport attribute. Assuming, of course, that it has standard C entry points, not compiler-specific C++ entry points.
Unless you were talking about C++/CLI, in which case you would reference the .NET DLL exactly as you would reference any other .NET DLL.
You can call a Win32 navite dll directly from your code using P/Invoke.
http://msdn.microsoft.com/en-us/magazine/cc164123.aspx