J'ai traversé la dll walkthrough sur MSDN et cela fonctionne très bien. J'ai ensuite supprimé tout le code de style C++ dans la DLL et l'a remplacé par l'équivalent C, et cela fonctionne toujours. MAIS, quand je renomme le fichier de X.cpp en X.c (ce que je devine provoque la compilation en mode C), j'obtiens l'erreur LNK2019 (symbole externe non résolu) pour chaque fonction dans la DLL. Pour mes besoins, il est essentiel que la DLL soit en C et non en C++ car c'est ce que Java Native Access supporte.écrire un dll dans Visual Studio en C (pas C++) causant des symboles non résolus
est ici l'en-tête de la dll:
__declspec(dllexport) double Add(double a, double b);
__declspec(dllexport) double Subtract(double a, double b);
__declspec(dllexport) double Multiply(double a, double b);
__declspec(dllexport) double Divide(double a, double b);
est ici le corps du (C++) programme de test qui utilise la dll:
#include <iostream>
#include "MyMathFuncs.h"
using namespace std;
int main()
{
double a = 7.4;
int b = 99;
cout << "a + b = " <<
Add(a, b) << endl;
cout << "a - b = " <<
Subtract(a, b) << endl;
cout << "a * b = " <<
Multiply(a, b) << endl;
cout << "a/b = " <<
Divide(a, b) << endl;
return 0;
}
(Juste pour préciser qu'il est bien que le programme d'essai est en C++, c'est seulement la DLL que j'essaye de compiler en C).
après MyFuncs.h svp (question rapide, vous avez utilisé extern "C" ... correct?) – KevinDTimm