私はプログラミングの初心者であり、質問がばかげている場合は事前に謝罪します。
私のc++プロジェクトはライブラリ.xll(Excel用のDLL)としてコンパイルされ、フレームワークコード(プログラムエントリポイント)は正しくコーディングされており、安定して動作します。カスタム関数は個別のモジュールです。
// header.h
typedef struct _TMDYDate {
long month;
long day;
long year;
} TMonthDayYear;
ファイルfuncs.c
には次の機能があります。
// funcs.c
#include "header.h"
__declspec(dllexport) long GetDate() {
TMonthDayYear myDate;
myDate.day = 1 ;
myDate.month = 1;
myDate.year = 2000;
if (DateToMDY(2004, &myDate) != 1) {
return 0;
}
return myDate.year;
}
ここで、関数DateToMDY
は別のファイルで宣言されていますDates.c
:
// dates.c
int DateToMDY (long tmpyear, TMonthDayYear *mdy) {
mdy->year = tmpyear; // <- Error is here
return 1;
}
関数をデバッグし、参照( )で値2004GetDate()
を割り当てようとすると、エラーが発生します。mdy->year = tmpyear;
エラーは次のとおりです。
Unhandled exception at 0x0e342b84 (alcDates.xll) in EXCEL.EXE: 0xC0000005: Access violation writing location 0x40e3db28
面白いのは、DateToMDY
の宣言をファイルfuncs.c
に移動したときです。これは、が呼び出されたときと同じDateToMDY
です。エラーはありません。
間違ったメモリ使用量だと思いますが、私にとっては、さまざまなモジュール(dates.c、array.c、sorting.cなど)の機能を分離することが重要です。
どこを探すべきかわかりません。プロジェクトのコンパイル設定が間違っている可能性があります。