C ++演習の一部として単純なDLLを作成しましたが、DLL関数を呼び出すとアクセス違反の例外が発生します。これがDLLのヘッダーファイルです(CPPがここで役立つとは思えません):
#pragma once
namespace MathFuncs
{
class MyMathFuncs
{
public:
// Returns a + b
static __declspec(dllexport) double Add(double a, double b);
// Returns a - b
static __declspec(dllexport) double Subtract(double a, double b);
// Returns a * b
static __declspec(dllexport) double Multiply(double a, double b);
// Returns a / b
// Throws DivideByZeroException if b is 0
static __declspec(dllexport) double Divide(double a, double b);
};
}
そして、これが私のメインです:
#include <iostream>
#include "windows.h"
using namespace std;
int main(void)
{
double (__cdecl *MYPROC)(double,double);
/* get handle to dll */
HINSTANCE hGetProcIDDLL = LoadLibrary("DLLExample.dll");
if(hGetProcIDDLL == NULL)
throw;
/* get pointer to the function in the dll*/
FARPROC lpfnGetProcessID = GetProcAddress(hGetProcIDDLL,"Add");
if(lpfnGetProcessID)
throw;
MYPROC = (double (__cdecl *)(double,double))lpfnGetProcessID;
if(MYPROC)
throw;
double x = MYPROC(5.5,5);
return 0;
}
助言がありますか?ありがとう!