-
December 7th, 2012, 12:39 PM
#1
Calling a library
I am new to c++, so I apologize for the possibly poorly formulated question below.
I am trying to use gnu glpk library, and I am doing something wrong.
I code in visual studio 2010. To use the library, I have included the #include <glpk.h> command. In the code I pass through it (visible below) I get 15 instances of
1>lkj.obj : error LNK2019: unresolved external symbol _glp_create_prob referenced in function _main
and similar.
I am sure there is something silly I just don't know that I am supposed to do.
Here is my code:
Code:
#include <iostream>
#include <stdlib.h>
#include <glpk.h>
int main(void)
{ glp_prob *lp;
int ia[1+1000], ja[1+1000];
double ar[1+1000], z, x1, x2, x3;
s1: lp = glp_create_prob();
s2: glp_set_prob_name(lp, "sample");
s3: glp_set_obj_dir(lp, GLP_MAX);
s4: glp_add_rows(lp, 3);
s5: glp_set_row_name(lp, 1, "p");
s6: glp_set_row_bnds(lp, 1, GLP_UP, 0.0, 100.0);
s7: glp_set_row_name(lp, 2, "q");
s8: glp_set_row_bnds(lp, 2, GLP_UP, 0.0, 600.0);
s9: glp_set_row_name(lp, 3, "r");
s10: glp_set_row_bnds(lp, 3, GLP_UP, 0.0, 300.0);
s11: glp_add_cols(lp, 3);
s12: glp_set_col_name(lp, 1, "x1");
s13: glp_set_col_bnds(lp, 1, GLP_LO, 0.0, 0.0);
s14: glp_set_obj_coef(lp, 1, 10.0);
s15: glp_set_col_name(lp, 2, "x2");
s16: glp_set_col_bnds(lp, 2, GLP_LO, 0.0, 0.0);
s17: glp_set_obj_coef(lp, 2, 6.0);
s18: glp_set_col_name(lp, 3, "x3");
s19: glp_set_col_bnds(lp, 3, GLP_LO, 0.0, 0.0);
s20: glp_set_obj_coef(lp, 3, 4.0);
s21: ia[1] = 1, ja[1] = 1, ar[1] = 1.0; /* a[1,1] = 1 */
s22: ia[2] = 1, ja[2] = 2, ar[2] = 1.0; /* a[1,2] = 1 */
s23: ia[3] = 1, ja[3] = 3, ar[3] = 1.0; /* a[1,3] = 1 */
s24: ia[4] = 2, ja[4] = 1, ar[4] = 10.0; /* a[2,1] = 10 */
s25: ia[5] = 3, ja[5] = 1, ar[5] = 2.0; /* a[3,1] = 2 */
s26: ia[6] = 2, ja[6] = 2, ar[6] = 4.0; /* a[2,2] = 4 */
s27: ia[7] = 3, ja[7] = 2, ar[7] = 2.0; /* a[3,2] = 2 */
s28: ia[8] = 2, ja[8] = 3, ar[8] = 5.0; /* a[2,3] = 5 */
s29: ia[9] = 3, ja[9] = 3, ar[9] = 6.0; /* a[3,3] = 6 */
s30: glp_load_matrix(lp, 9, ia, ja, ar);
s31: glp_simplex(lp, NULL);
s32: z = glp_get_obj_val(lp);
s33: x1 = glp_get_col_prim(lp, 1);
s34: x2 = glp_get_col_prim(lp, 2);
s35: x3 = glp_get_col_prim(lp, 3);
s36: printf("\nz = %g; x1 = %g; x2 = %g; x3 = %g\n",
z, x1, x2, x3);
s37: glp_delete_prob(lp);
return 0;
}
/* eof */
I assume that I am forgetting to add a library in one way or another...
Help would be much appreciated!
Last edited by gugge444; December 7th, 2012 at 01:10 PM.
-
December 7th, 2012, 01:07 PM
#2
Re: Calling a library
Originally Posted by gugge444
I am new to c++, so I apologize for the possibly poorly formulated question below.
The question itself is ok, but please use code tags when posting code.
I assume that I am forgetting to add a library in one way or another...
Probably. You need to add it to the Additional Dependecies on the Linker\Input node of the project properties.
I was thrown out of college for cheating on the metaphysics exam; I looked into the soul of the boy sitting next to me.
This is a snakeskin jacket! And for me it's a symbol of my individuality, and my belief... in personal freedom.
-
December 7th, 2012, 01:12 PM
#3
Re: Calling a library
Modified the text! I think you are right about the dependencies, but I am not sure how to make this work.. All the linker --> input --> additional dependencies allows me to do is write names of files.
I have tried writing glpk_4_47.lib here, but it seems not to help my situation. (--> this is the lib file that came with the package)
Any suggestions?
And thanks for your input!
-
December 7th, 2012, 01:15 PM
#4
Re: Calling a library
Clearly if anyone wants to have a look at the package to see if they can make it work, that would be much appreciated.
The file can be downloaded for free from https://www.gnu.org/software/glpk/
Thanks in advance
-
December 7th, 2012, 01:17 PM
#5
Re: Calling a library
Originally Posted by gugge444
I have tried writing glpk_4_47.lib here, but it seems not to help my situation. (--> this is the lib file that came with the package)
So you get a linker error telling you the .lib fies is not found? In this case the .lib file probably is not in one of the directories VC++ searches for library files. Where have you put it?
I was thrown out of college for cheating on the metaphysics exam; I looked into the soul of the boy sitting next to me.
This is a snakeskin jacket! And for me it's a symbol of my individuality, and my belief... in personal freedom.
-
December 7th, 2012, 01:25 PM
#6
Re: Calling a library
I made it past that problem by adding files to the resources folder. I now run the program fine, but when the cmd prompt appears it appears with a message claiming that the dll file used is missing from my computer, any ideas how to change the directory under which it looks for the dll?
-
December 7th, 2012, 01:33 PM
#7
Re: Calling a library
Originally Posted by gugge444
I made it past that problem by adding files to the resources folder. I now run the program fine, but when the cmd prompt appears it appears with a message claiming that the dll file used is missing from my computer, any ideas how to change the directory under which it looks for the dll?
The easiest is to put the DLL in the same folder as your executable.
Cheers, D Drmmr
Please put [code][/code] tags around your code to preserve indentation and make it more readable.
As long as man ascribes to himself what is merely a posibility, he will not work for the attainment of it. - P. D. Ouspensky
-
December 7th, 2012, 01:38 PM
#8
Re: Calling a library
YES! It is all sorted! Sorry for all the frustrating newbi questions, but I should be fine from now! Thanks for all help
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|