LNK2001 und LNK1120 Fehler in Visual Studio für MentalRay Shader



  • Hey Leute,

    zunächst bin ich mir nicht sicher ob mein Beitrag auch in diesen Bereich passt. Nun ja, ich probiere es trotzdem.

    Bin gerade dabei mich in Mental Ray einzuarbeiten und wollte meinen ersten toon-shader schreiben. Leider meldet mir Visual Studio (Express 2012) beim kompilieren der .dll-Datei zwei Fehler:
    error LNK2001: unresolved external symbol miaux_quantize
    error LNK1120: 1 unresolved externals

    #include "shader.h"
    #include "miaux.h"
    
    struct front_bright_steps { 
        miColor tint; 
        miInteger steps;
    };
    
    DLLEXPORT
    int front_bright_steps_version(void) { return(1); }
    
    DLLEXPORT
    miBoolean front_bright_steps ( 
        miColor *result, miState *state, struct front_bright_steps *params  )
    {
        miColor *tint = mi_eval_color(&params->tint);
        miScalar scale = 
            miaux_quantize(-state->dot_nd, *mi_eval_integer(&params->steps));
        result->r = tint->r * scale;
        result->g = tint->g * scale;
        result->b = tint->b * scale;
        result->a = 1.0;
        return miTRUE;
    }
    

    Hat jemand eine Ahnung woher das kommt? Die miaux.h befindet sich im include-Verzeichnis und trotzdem gibt es scheinbar mit miaux_quantize beim Kompilieren ein Problem.



  • spleen schrieb:

    trotzdem gibt es scheinbar mit miaux_quantize beim Kompilieren ein Problem.

    Nope, das Kompilieren klappt wunderbar. Der Fehler kommt beim Linken. 😉
    Vermutlich musst du deinem linker noch sagen, welche lib er dabeipacken soll.



  • Bereits verlinkt sind:
    Configuration Properties -> Linker -> Input -> Additional Dependencies
    mayabase.lib; shader.lib

    Die miaux.h befindet sich auch im include-Ordner und ist zur Sicherheit auch im Projekt als Headerdatei eingebunden.

    Was übersehe ich die ganze Zeit? Gibt es etwa noch eine miaux.lib die ich verlinken muss?



  • Peinlich!

    miaux.c mit der Funktion miaux_quantize befand sich nicht im include-Ordner und wurde auch nicht über #include angegeben.



  • spleen schrieb:

    miaux.c mit der Funktion miaux_quantize befand sich nicht im include-Ordner und wurde auch nicht über #include angegeben.

    Das gehört auch beides da nicht hin.
    *.c gehört nicht in das Include-Verzeichnis.
    *.c wird nicht mit #include eingebunden.



  • spleen schrieb:

    Peinlich!

    miaux.c mit der Funktion miaux_quantize befand sich nicht im include-Ordner und wurde auch nicht über #include angegeben.

    jupp. das ist echt peinlich.

    zurück zur schulbank, header, c/cpp-dateien, libs, statische und dynamisch gelinkte bibliotheken paucken.


Anmelden zum Antworten