2016-05-28 3 views
0

私はいくつかの関数とグローバル変数で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ファイルでこれをどのように指定する必要がありますか?

多くのおかげで、

ミゲル

答えて

1

問題は変数の宣言に欠け__declspec(dllimport)および__declspec(dllexport)によって引き起こされました。

詳細はhttps://groups.google.com/forum/#!topic/comp.compilers.lcc/FrIyE0HMI04を参照してください。

+0

あなた自身の回答を受け入れるのはなぜですか? :-) – alk

+0

できますか?お急ぎのような音... –

+0

できることは、これは非常によく受け入れられています。あなたはおそらくこれについての評判のポイントを受け取りません.... ;-) – alk

関連する問題