私はいくつかの関数とグローバル変数でDLLを構築しました。次に、buildlibを使ってimportlibを作成しました。セグメント違反がDLLの変数に書き込む(lcc-win32)
.EXPファイルは次のとおりです。
CSC_FFSW.dll
_CSC_FFSW_B _CSC_FFSW_B data
_CSC_FFSW_DWork _CSC_FFSW_DWork data
_CSC_FFSW_M _CSC_FFSW_M data
_CSC_FFSW_U _CSC_FFSW_U data
_CSC_FFSW_Y _CSC_FFSW_Y data
_CSC_FFSW_initialize _CSC_FFSW_initialize
_CSC_FFSW_step0 _CSC_FFSW_step0
_CSC_FFSW_step1 _CSC_FFSW_step1
私はプログラムからDLLをインポートすると、私はグローバル変数(例えばCSC_FFSW_U)を読み取ることができますが、私はそれらを書くしようとすると、私は、セグメント違反の例外を取得します。
の代わりにインポートライブラリを使用して、私は手動で使用してDLLからシンボルをインポートしてみました:私は罰金変数に書き込むことができます。このアプローチでは
dllHandle = LoadLibrary("CSC_FFSW.dll");
myType* pCSC_FFSW_U = (myType*)GetProcAddress(dllHandle, "_CSC_FFSW_U");
...
etc.
を。しかし、この方法は手作業でエラーが起こりやすいため、あまりうまくいきません。
buildlibで作成されたインポートライブラリの変数に読み書き可能なアクセス権が必要ですか? .expファイルでこれをどのように指定する必要がありますか?
多くのおかげで、
ミゲル
あなた自身の回答を受け入れるのはなぜですか? :-) – alk
できますか?お急ぎのような音... –
できることは、これは非常によく受け入れられています。あなたはおそらくこれについての評判のポイントを受け取りません.... ;-) – alk