我在.dll的标题中定义了一个函数
void calculo(vector A, vector B, double &Ans1, double jj);
在.cpp文件中,其定义如下:
void calculo(vector A, vector B, double &Ans1, double jj = 36.5);
我正在使用以下代码从另一个C代码中调用此.dll:
#include "stdafx.h"
#include
#include
#include
#include "TEST_DLL.h"
typedef void(_stdcall *f_funci)(vector A, vector B, double &Ans1, double jj);
int main()
{
vector A;
vector B;
double ans1;
double teste;
HINSTANCE hGetProcIDDLL = LoadLibrary(L"MINHA_DLL.dll");
if (!hGetProcIDDLL) {
std::cout << "could not load the dynamic library" << std::endl;
return EXIT_FAILURE;
}
f_funci Resultado = (f_funci)GetProcAddress(hGetProcIDDLL, "calculo");
if (!Resultado) {
std::cout << "could not locate the function" << std::endl;
return EXIT_FAILURE;
}
Resultado(A,B, ans1, teste);
}
这样,如果我输入“ jj”参数,该函数将起作用.但是,由于它在.dll中被定义为标准输入,因此在没有它的情况下也应该可以工作,但是如果我尝试不进行编译.在从.dll加载函数的过程中,有没有一种方法可以声明“ jj”参数具有标准输入值?
尝试使用Resultado(A,B,ans1)进行编译;产生以下错误:
error C2198: 'f_funci': too few arguments for call