[ sanivr @ 28.02.2017. 15:58 ] @
Imam problem koi ne mogu resiti 2 dana (ne znam resiti :) ) Znaci kada pozovem funkciju vsFlip dobijam sledeci error koi iskreno ne znam sta znaci.

Error
Code:
Severity    Code    Description    Project    File    Line    Suppression State
Error    LNK2019    unresolved external symbol _vsFlip referenced in function "public: unsigned char * __thiscall FrameConverter::convert(class std::shared_ptr<unsigned char>)" ([email protected]@@[email protected]@[email protected]@@Z)    TrackerWrapper-jn    


klasa
Code:
#ifndef DAON_FACE_SDK_FRAMECONVERTER_H
#define DAON_FACE_SDK_FRAMECONVERTER_H

#include "WrapperOpenCV.h"
#include "dependencies\VisageSDK\include\VisageTracker.h"
#include <memory>

class FrameConverter {

public:
    void init(int width, int height, int nChannels, int orientation, int flip);
    unsigned char* convert(std::shared_ptr<unsigned char> imageData);

    FrameConverter() {
        width = 0;
        height = 0;
        orientation = 0;
        flip = 0;
        channels = 0;

        buffer = nullptr;
        bufferN = nullptr;
        bufferT = nullptr;
    };

    ~FrameConverter();

private:
    int width = 0;
    int height = 0;
    int orientation = 0;
    int flip = 0;
    int channels = 0;

    void YUV_NV21_TO_RGB(unsigned char* yuv, VsImage* buff, int width, int height);
    int clamp(int x);
    void YUV420toY(unsigned char* yuv, VsImage* buff, int width, int height);

    VsImage* buffer = nullptr;
    VsImage* bufferN = nullptr;
    VsImage* bufferT = nullptr;
};


Code:
CVAPI(void)  vsFlip( const VsArr* src, VsArr* dst VS_DEFAULT(NULL),
                     int flip_mode VS_DEFAULT(0));


znaci ovde gde god pozovem vsFlip ja dobiejem taj error pls za neki helpic :)
Code:
unsigned char* FrameConverter::convert(std::shared_ptr<unsigned char> imageData)
{
    //unsigned char *ret = (unsigned char*)bufferT->imageData; 
    //return ret;

    if (channels == 3) {
        YUV_NV21_TO_RGB(imageData.get(), buffer, width, height);
    } else {
        YUV420toY(imageData.get(), buffer, width, height);
        const VsArr* t;

        vsFlip(t, NULL, 0);
    }

    unsigned char *ret = nullptr;
    // deal with orientation
    switch(orientation){
        case 0: case 360:
            if (flip)
                vsFlip(buffer, bufferN, 1); 
            else
                vsCopy(buffer, bufferN);
            ret = (unsigned char*) bufferN->imageData;
            break;
        case 90:
            vsTranspose(buffer, bufferT);
            if (!flip) {
                vsFlip(bufferT, bufferT, 1);
            }
            ret = (unsigned char*) bufferT->imageData;
            break;
        case 180:
            if (flip)
                vsFlip(buffer, bufferN, 0);
            else
                vsFlip(buffer, bufferN, -1);
            ret = (unsigned char*) bufferN->imageData;
            break;
        case 270:
            vsTranspose(buffer, bufferT);
            if (flip) {
                vsFlip(bufferT, bufferT, -1);
            }
            else {
                vsFlip(bufferT, bufferT, 0);
            }
            ret = (unsigned char*) bufferT->imageData;
            break;
    }

    return ret;

}
[ sanivr @ 28.02.2017. 20:11 ] @
Otkrila sam da je problem nesto oko reference, ali gde je definicija za vsFlip tamo je i za ostale funkcije koje su gore u kod i koi prolaze, vsFlip je defirnirana u vs_core_core_c

Code:

CVAPI(void)  vsFlip( const VsArr* src, VsArr* dst VS_DEFAULT(NULL), flip_mode VS_DEFAULT(0));
#define vsMirror vsFlip

VSAPI(void)  vsTranspose( const VsArr* src, VsArr* dst );
#define vsT vsTranspose
[ Branimir Maksimovic @ 28.02.2017. 20:34 ] @
vsFlip nije mangled verovatno u headeru pise extern "C" dok u implementaciji ne pise...
[ sanivr @ 28.02.2017. 21:27 ] @
Nisam bas toliko dobra :D ako sam dobro razumela gde je definirana vsFlip ima nesto ovakovo

Code:

#ifndef __VS_CORE_C_H__
#include "vs_core_types_c.h"
#define __VS_CORE_C_H__


#ifdef __cplusplus
extern "C" {
#endif


a gde pozivam funkciju nema? ako je to to stavila sam i tamo ama opet ista greska. Hvala ti na odgovoru
[ Branimir Maksimovic @ 28.02.2017. 21:44 ] @
Tamo gde je funckija definisana nema... to je verovatno zato sto definicija treba da se iskompajlira sa C kompajlerom. Ili je bar tako predvidjeno...
[ sanivr @ 28.02.2017. 22:20 ] @
Ima i tamo ono sto sam kopirala je iz tog fajla :S
[ Branimir Maksimovic @ 01.03.2017. 00:04 ] @
Nije. #ifndef __VS_CORE_C_H__ se stavlja u header... To definitivno nije c fajl...

edit: ako je c fajl cemu onda to? Mislim to je bug ocigledno....
[ sanivr @ 01.03.2017. 08:12 ] @
Krv mi popilo ovo :D Jedno pitanje kako moze da radi kada iskomentiram samo vsFlip, i kompajler proge a tamo ima funkcija koja je deklarirana na isto mesto (vsTranspose)? Jer mogu da okacim proekt pa da procesljamo taj fajl, a i oko linkera mozda i tamo nesta gresim nisam bas sigurna dali je i taj deo korektan molim te? Hvala ti

Edit: Tu je projekt

[Ovu poruku je menjao sanivr dana 01.03.2017. u 09:33 GMT+1]
[ Branimir Maksimovic @ 01.03.2017. 19:32 ] @
Nije tu projekt. Downloaduje nesto sto se zove TrackerWrapper-jni.rar i fajl je prazan.
[ sanivr @ 02.03.2017. 12:03 ] @
Od jutra nesto pokusavam da uradim da ne bi vas gnjavila ali nista, citala na stacoverflow ali nemogu nista. Ne znam zasto ne radi tal link ali probaj ovaj molim te. Opet nije mi jasno kako moze one druge funkcije koje su u istom tom fajlu da rade a samo ona ne, kada sklonim svFlip onda proge sve iskompajlira t.e napravi dll sto znaci da linker, biblioteke i sl su dobro podeseni zar ne? Opet stvarno ti hvala na pomoci
[ Branimir Maksimovic @ 02.03.2017. 13:35 ] @
U tim tvojim binary libovima nema definisano nigde vsFlip a ima vsTranspose....