Calling a library
CodeGuru Home VC++ / MFC / C++ .NET / C# Visual Basic VB Forums Developer.com
Results 1 to 8 of 8

Thread: Calling a library

  1. #1
    Join Date
    Dec 2012
    Posts
    21

    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.

  2. #2
    Join Date
    Jun 2010
    Location
    Germany
    Posts
    2,595

    Re: Calling a library

    Quote Originally Posted by gugge444 View Post
    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.

  3. #3
    Join Date
    Dec 2012
    Posts
    21

    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!

  4. #4
    Join Date
    Dec 2012
    Posts
    21

    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

  5. #5
    Join Date
    Jun 2010
    Location
    Germany
    Posts
    2,595

    Re: Calling a library

    Quote Originally Posted by gugge444 View Post
    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.

  6. #6
    Join Date
    Dec 2012
    Posts
    21

    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?

  7. #7
    Join Date
    Jul 2005
    Location
    Netherlands
    Posts
    2,016

    Re: Calling a library

    Quote Originally Posted by gugge444 View Post
    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

  8. #8
    Join Date
    Dec 2012
    Posts
    21

    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
  •  


Windows Mobile Development Center


Click Here to Expand Forum to Full Width

This is a CodeGuru survey question.


Featured


HTML5 Development Center