I do not see errors in your code. Extern "C" and __cdecl are not important. They control how your entry point is decorated for the linker. They do not control if it should be exported out of your DLL or executable or not. By the way .EXE can export entry points in the same way as any other DLL. DLLs can call functions that reside in .EXE in the same way as in any other DLL.
The key element is __declspec(dllexport). It seems to be correct.
Check if your header is really included into your cpp file and try variants with various options in the property pages of your project.