2017-08-22 7 views
0

Je suis en train d'utiliser le package LIBSVM sur Eclipse IDE en utilisant C.Erreur reliant mon fichier svm.cpp à l'aide LIBSVM avec mon programme C

Dans le fichier README, il indique que « Vous devez #include » svm .h "dans vos fichiers source C/C++ et liez votre programme avec` svm.cpp '. "

J'ai déjà inclus "svm.h" dans tous mes fichiers source et j'ai ajouté mon fichier "svm.cpp" dans le dossier du code source. Cependant, j'ai une erreur "modèle avec C linkage" dans le fichier 'svm.cpp'.

L'erreur est-elle liée à la façon dont j'ai ajouté le fichier 'svm.cpp' dans mon programme? Je ne comprends vraiment pas et j'ai essayé de chercher partout.

svm.cpp:

#include <math.h> 
#include <stdio.h> 
#include <stdlib.h> 
#include <ctype.h> 
#include <float.h> 
#include <string.h> 
#include <stdarg.h> 
#include <limits.h> 
#include <locale.h> 
#include "libsvm.h" 
#include "main.h" 


#ifdef __cplusplus 
extern "C" { 
#endif 

int libsvm_version = LIBSVM_VERSION; 
typedef float Qfloat; 
typedef signed char schar; 


#ifndef min 
    template <class T> static inline T min(T x,T y) { return (x<y)?x:y; } 
#endif 


#ifndef max 
    template <class T> static inline T max(T x,T y) { return (x>y)?x:y; } 
#endif 


template <class T> static inline void swap(T& x, T& y) { T t=x; x=y; y=t; } 
template <class S, class T> static inline void clone(T*& dst, S* src, int n) 

. 
. 
. 
. 
. 
. 
. 
. 
#ifdef __cplusplus 
} 
#endif 

Répondre

0

Quelle version de libsvm que vous utilisez, et où avez-vous le télécharger à partir?

This version de svm.cpp ne pas ont extern "C" autour de modèles.

Si vous les avez ajoutés vous-même, vous n'avez personne d'autre à blâmer.

Si votre version est livrée avec extern "C", cette version est cassée: les modèles ne peuvent vraiment pas avoir de lien extern "C".

Mise à jour:

J'ai ajouté le extern "C" par moi-même parce que je pensais qu'il était nécessaire. Est-ce faux?

Oui, c'est.

quand je n'ai pas ajouté extern « C », il y avait plus d'erreurs

Vous devez accepter cette réponse à votre question, supprimer vos modifications et poser une nouvelle question détaillant les autres erreurs.

+0

J'ai utilisé la version que vous avez liée, mais j'ai ajouté le "C" externe par moi-même parce que je pensais que c'était nécessaire. Est-ce faux? Parce que quand je n'ai pas ajouté extern "C", il y avait plus d'erreurs, comme: "référence non définie à '_Heap_Begin'" etc ... Y at-il de toute façon pour résoudre ce problème? –

+0

@RyanJaya J'ai mis à jour la réponse. –