I have gotten a problem compiling. the program gives me an LNK2001 error so there seems to be a problem with my function but i cant seem to find it..i am posting part of the function that calls and the original function being called

void disp() 
    time_info start, end;
time_increment(hours_count,minute_count,day_count,month_count,year_count,start,end);
for (i=0;i<S;i++)
    {
        n++;
        cout<< "Your call " <<n<<" started at " <<time_and_date[i].start.hours<<":"
            <<time_and_date[i].start.minutes<<"/"

            <<time_and_date[i].start.day<<"/"<<time_and_date[i].start.month
            <<"/" << time_and_date[i].start.year;
        cout<< " and ended at "<<time_and_date[i].end.hours<<":"<<time_and_date[i].end.minutes<<"/"
            <<time_and_date[i].end.day<<"/"<<time_and_date[i].end.month<<"/" 
            << time_and_date[i].end.year<<endl<<endl;

        cout<< "The duration is " << hours[i] << " Hour(s) and " <<minutes[i] <<" Minutes"<<endl<<endl;

        hours_count=hours[i]+hours_count;
        minute_count=minutes[i]+minute_count;

    rate=call_cost();

}

here is part of the function being called...the code is half because the procedure in the for loop is repeated for hours, days e.t.c

void time_increment(int& hours_count,int&minute_count, double& day_count,double& month_count,double& year_count,time_info& start, time_info& end) 

    if (!equality())
if (sec_count = 60)
            for(i=0;i<S;i++)
            {
                temp_start=time_and_date[i].start.minutes;
                temp_end=time_and_date[i].end.minutes;
                for(a=temp_start;a<temp_end;a++)
                {
                    minute_count++;
                    minutes[i]=minute_count; 
                }
}

Dani AI

Generated

A linker "unresolved external" for a function means the linker did not find a compiled definition that exactly matches the declaration your code calls. later noted the root cause was a Visual Studio project/configuration issue; that is a common real-world trigger. For the official error details see Linker Tools Error LNK2001.

Quick checklist (work through these in order):

  • Confirm the .cpp that implements the function is actually part of the active project and is not excluded from the current build configuration (Solution Explorer -> file Properties -> Exclude From Build).
  • Ensure the prototype and the definition match exactly: types, references, const, namespaces, class scope, and calling convention. A declaration in a header that differs even slightly from the implementation will produce this error.
  • If the function lives in a static or dynamic library, make sure the .lib is listed under Linker -> Input -> Additional Dependencies and that the library is built for the same platform/configuration.
  • Watch for linkage scope issues: static at file scope or an anonymous namespace will prevent external linkage; extern "C" used in one place but not the other changes symbol decoration.

How to diagnose:

  • Use the Visual Studio Developer Command Prompt and inspect object/library symbols with dumpbin /symbols to see whether the symbol is present and how it is decorated; compare the decoration to what the linker expects. See Dumpbin reference.
  • Build with verbose linker output (Linker -> Command Line add /VERBOSE) to see what objects/libraries the linker is searching.

Advice tied to the thread: was right to ask for a minimal repro — reducing to a tiny example quickly shows whether the problem is code or project setup. and touched on important checks (type/signature and project membership). If the linker still fails after the checklist, create a minimal reproducer (header + implementation + one call) and verify it links; that will pinpoint whether the failure is a project configuration or a code/signature mismatch.

Recommended Answers

All 8 Replies

Check your spelling, check the number of arguments, check the type of arguments, and if none of that works, make a tiny program that exhibits the problem so that we can actually compile and link it ourselves instead of trying to decipher the snippets that you think are relevant.

Are your variables:
day_count,month_count,year_count
doubles or ints? The function is expecting references to doubles, but by their names I'd expect the actual arguments to be declared as integers.

As Narue said, a full example of the problem would be helpful.

Val

The whole code works well but when it is modularized that is when i get this error..

Well if you posted the actual error message, we can tell you what is missing, and where to start looking.

this is the error message i get

main.obj : error LNK2001: unresolved external symbol "void __cdecl time_increment(int &,int &,double &,double &,double &,struct time_info &,struct time_info &)" (?time_increment@@YAXAAH0AAN11AAUtime_info@@2@Z)
Debug/main.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.

So is time_increment() in another source file, other than main.cpp ?
You need to make sure ALL the source files are listed in the project, otherwise they don't get compiled and linked together.

If it is in the project, then make sure it compiles without errors.
Perhaps even check that you haven't accidentally commented out the entire function.

For the third time, please post the code that shows all references to the function. Its prototype, its implementation, and where you call it, the declaration of the variables you pass as arguments. Without that information, we cannot help you. Other than to take pot shots in the dark, such as:

Check that the prototype and the implementation agree in the parameter list.
Check that you are sending variables of the correct types to the reference parameters.
Check that the phase of moon is correct for your compiler version.

apparently the problem was with the visual studio settings so it couldnt link

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.