delphiでC++DLLを呼び出す際に問題が発生し、DLLはLabviewで記述されていますが、DLL構文はすべてC ++です。主な問題は、doubleの動的配列として関数にデータを渡そうとすることです(これは本質的にポインタですよね?)
.hヘッダーファイルの関数定義は次のとおりです。
int16_t __cdecl NRELIVparExtract(
double voltageV[],
double currentA[],
int32_t nDataPoints,
uint16_t fitAlgorithim,
int16_t *twoOrLessPoints,
double *Voc,
double *Isc,
double *Vmp,
double *Imp
);
私がそれを呼び出すために使用しようとしている私のデルファイコードは次のとおりです:
public { Public declarations }
end;
var
Function NRELIVparExtract (voltageV, currentA: Array of Double; nDataPoints :Integer;
fitAlgorithim :Word; Var twoOrLessPoints : SmallInt;
Voc, Isc, Vmp, Imp : Double): smallint ; CDecl;External IVparExtract_NREL.dll'
何とか
procedure TFormMainIVanalysis.ExtractNREL(InputFileName : ShortString);
var
VoltArray, CurrArray : Array Of double;
blah
Begin
NRELresult := NRELIVparExtract(VoltArray,CurrArray,NpointsForFitting, fitAlgorithm, twoOrLessPoints, LVoc, LISc, LVmpp, LImpp);
コンパイラがdelphi.dprの開始行に到達すると、アクセス違反エラーが発生するか、IVparExtract_NREL.dllが見つかりません。
どんな提案でも大歓迎です、乾杯、ブライアン