Visual Studio 2010 error linking Winsock library (C) - c

I'm trying to build a C server program, and I keep getting these errors:
http://i.imgur.com/cavkPAF.png
The common fix I'm seeing is to link to ws2_32.lib, which I'm doing already(Properties > Linker > Input > Additional Dependencies). I've also included WinSock2.h. I have the windows sdk, and I get no errors saying it can't find ws2_32.lib. I've tried linking directly to the .lib in the windows sdk directory, but still have the same problem. The dll is in correct place (C:\Windows\SysWOW64), and the SysWOW64 directory is listed in Configuration Properties > VC++ Directories > Executable Directories.
I have the same problem with Visual Studio 2013
Any ideas? Thanks.

Related

Visual Studio Community 2017 cl linker won't link GTK3 libraries?

I am writing code in C using GTK as GUI toolbox. I installed GTK3 via MSYS2 and managed to compile and build using GCC (TDM-Dragon) alright.
However, lately I am trying to compile and link using cl included in Visual Studio Community 2017 (heard it is faster and more stable). With this, I am having a hard time building an application. I am loosely following this tutorial:
http://www.tarnyko.net/en/?q=node/22
I created a BAT file and invoke it from the VS 2017 command prompt:
set GINC_PATH="C:\msys64\mingw64\include"
set GLIB_PATH="C:\msys64\mingw64\lib"
cl gtk3test.c -I"%GINC_PATH%\gtk-3.0" -I"%GINC_PATH%\glib-2.0" -I"%GLIB_PATH%\glib-2.0\include" -I"%GINC_PATH%\pango-1.0" -I"%GINC_PATH%\cairo" -I"%GINC_PATH%\gdk-pixbuf-2.0" -I"%GINC_PATH%\atk-1.0" -Dinline= /link /LIBPATH:%GLIB_PATH% gtk-3.lib gdk-3.lib gobject-2.0.lib glib-2.0.lib
This compiles alright, gives me gtk3test.obj. However, the linker returns the following error:
LINK : fatal error LNK1181: cannot open input file 'gtk-3.lib'
What am I doing wrong here? How would it be possible to use cl for linking GTK3 applications?
Thank you all in advance!
Xuttuh
Please check if you have gtk-3.lib in your folder path [%GINC_PATH%]. Even I have this issue using GTK+3.0, the package configuration is not giving the proper library reference.
The gtk library is something like gtk-win32-3.0.lib available inside lib folder %GINC_PATH%\lib in your case.
I still have issues in linking GTK libraries in my visual studio application even after providing the needed library references in Linker.

Setting up GNSDK development environment - nmake doesn't work

I'm following GNSDK: The Barebones C Intro and have a problem while setting up the development environment.
The instructions say:
The first thing you need to do is set up your development environment. I coded and ran this application on Windows System 7. The SDK comes with a number of C samples. Each sample has its own folder. For this application, I cloned one of the folders and named it "/Samples/gnsdk_barebones". I used the "makefile" in the cloned directory and the Visual Studio 2008 C/C++ compiler to run the makefile from the command line (Visual Studio 2008 > Tools > Visual Studio 2008 Command Prompt). It's important that you create your folder under /Samples as the makefile uses relative path names to do its build.
I'm running MSVS 2015 on MS-Windows10 laptop.
I opened the 'Developer Command Prompt for VS2015' and type the following command
C:\Users\Dell\Documents\Play\GNSDK\samples\gnsdk_barebones>nmake -f makefile
Microsoft (R) Program Maintenance Utility Version 14.00.23918.0
Copyright (C) Microsoft Corporation. All rights reserved.
makefile(8) : fatal error U1000: syntax error : ')' missing in macro invocation
Stop.
The gnsdk_barebones folder contains two files that were downloaded as part of the SDK.
main.c
makefile
I couldn't find any record makefile(8) error type and would appreciate your advice.
Please let me know if further info is required.
Thanks a lot for your help!
In the light of your comments, the explanation of your problem is that your makefile is
a makefile for GNU make - which is the make-
tool almost always used - and you are trying to run it with Microsoft's
make-tool, nmake, which is almost forgotten and cannot parse a GNU makefile.
You can get GNU make for Windows
as a standalone package, or install it as part of a complete GNU GCC toolchain
for Windows such as TDM GCC.
Your comments pose additional questions. It's one question at a time on
Stackoverflow :) See How to ask.

Cannot include certain header files using the Visual C++ compiler

Hello I'm getting into Winsock programming in C. I believe that in order for me to access the (or any other header related to Winsock for that matter) header file I have to have Visual C++ 2010 installed and set it as my default compiler. So I download it, and in CodeBlocks I set it to my compiler. I run some Winsock code and I get this message:
C:\Users\Jared\Documents\Test.c|6|fatal error C1083: Cannot open include file: 'winsock2.h': No such file or directory|
I also get this message for including 'winsock.h' and 'windows.h'. This has something to do with the Visual C++ compiler. I try installing Visual C++ 2008 and use it as my compiler and get the same message. I then read that I have to install microsoft's SDK. I download and install it and it gets an error saying that I can't install it (this is the .Net framework 4.0 version). I then try the 3.5 version and it installs fine but my compiler still can't find the header files. I have the .net framework 4.0 so I don't see the problem. I also read that I have to include some header files in Visual C++ by going to Tools>Options>Projects and Solutions>VC++ Directories and I get the following message:
"VC++ Directory editing in tools > options has been deprecated."
Visual C++ 2010 no longer supports this feature. Does anyone have a solution or can help me with this?
Long story short: I cannot include 'winsock.h', 'winsock2.h', or 'windows.h' using the Visual C++ 2010 compiler.
All help is appreciated.
In Visual C++ 2010 it is recommended to use property sheets instead of this kind of global directory settings editing. You need to edit the user settings property sheet (probably Microsoft.Cpp.Win32.user.props) in your AppData folder. You can do it in the UI through the Property Manager via View->Property Manager and browsing for that sheet.
However, I think you should have $(WindowsSdkDir)include in Include Directories if you have it installed correctly.

How to use igraph (and other libraries) in Visual Studio 2010 for C?

I just started C recently and have been writing some basic C code, but is a bit clueless about how I should go about "installing" libraries like igraph in Visual Studio 2010. I downloaded the igraph "source code for Microsoft Visual Studio" here: http://igraph.sourceforge.net/download.html
(naive) Attempt
There is an "include" folder with all the ".h" files that I copied to the directory that my Visual Studio is set up to look in whenever I use include < something.h > but I get a "unresolved external symbol", which I know means the library isn't set up correctly.
Question
How should I go about "installing" igraph? (and possibly other C libraries)
Look in to the folders of your library, I suppose, you'll find a .lib file there.
Go to your project settings and open the linker settings. Under Input you should find additional dependencies. Add your .lib file(s) there. You also might need to add the folder where this .lib file(s) reside to the library folders (found under VC++-folders).
I have the german version of MSVC here, so your menu entries might be named slightly different, but you will find them ;)
Mark's answer was very helpful, but there were other issues. Following these step resolved it for me. Hopefully this will help someone in the future.
Step 1
The igraph package is a bunch of ".c" and ".h" files that was missing the ".lib" file in Mark's answer. It has to be open and build in Visual Studio. Then, the ".lib" file will appear in the "Debug" folder.
Step 2
Do the steps in Mark's answer.
However, in "VC++ Directories" there is a line call "Include Directories" where you have to store the path to your igraph include directory. This is so that Visual Studio can find the correct files when you write e.g. #include <include/igraph.h>.
Step 3
If you get a "...already defined in MSVCRTD.lib..." error. Then, visit this answer: How to resolve the following linker errors in Visual Studio?
Each of the libraries/subprojects that you are using must be compiled with the same option in "C/C++ -> Code Generation -> Runtime library".

Opening an Existing MakeFile Project in VS2010 or VS 2008 for debugging

I am exploring the code of an open source project..The project has its own directory structure and has several makefiles for building it on different platforms. I am working on the windows and want to pull it's source code in Visual Studio 2008 or 2010 by making visual studio project..I am able to build the project with Nmake utility of visual studio but I don't know how to debug if I don't have any .vcproj files or solution.
So can someone has some link or provide me some guidance about how can one make a visual studio project from make file. For more information the project I am trying to build is webP api project..
http://code.google.com/speed/webp/docs/api.html
To anwser your embedded question rather than your headline question - you can debug the output of the NMake process simply by invoking 'devenv' and passing it the the executable as an argument. I typically do this in the output directory of the build process so that devenv can find related DLLs and PDB files with debugging information.
My devenv (on a 32-bit VS2010 system) lives in "c:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\devenv.com"
Hopefully this can get you debugging!

Resources