MSDN에 대한 dll 연습을 진행했는데 정상적으로 작동합니다. 그런 다음 dll에서 모든 C++ 스타일 코드를 제거하고 C 코드로 바꿨습니다. 여전히 작동합니다.C (not C++)에서 Visual Studio에서 dll을 작성하여 해결되지 않은 기호를 발생했습니다.
그러나 파일 이름을 X.cpp (C 모드에서 컴파일이 일어난다 고 생각하는)로 바꿀 때 dll의 모든 함수에 대해 LNK2019 (확인할 수없는 외부 기호) 오류가 발생합니다. 내 목적을 위해 DLL이 C++이 아니어야한다는 것이 중요합니다. Java Native Access가 지원하는 것이기 때문입니다. 여기에 DLL을 사용하는 (C++) 시험 프로그램의 신체의
__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);
: 여기
는 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;
}
(그냥 괜찮아요 명확히하기가 테스트 프로그램 C++에 있으며, C에서 컴파일하려고하는 DLL 일뿐입니다. 확장자를 변경 한 후
게시 MyFuncs.h하시기 바랍니다 (빠른 질문, extern "C"... 올바른 사용합니까?) – KevinDTimm