私のC++ DLLプロジェクトでは、プロジェクトをデバッグ構成でビルドすると完全に動作します。機能の残りのようにリリース構成でビルドするとDLL関数がエクスポートされない
double _stdcall findMaxFreq(double &dCutLength, double &dCutTime, double &dSealTime, double &dCutSpeed, double &dDoughHeight, double* limitArray)
{
Calc *calcObj = new Calc();
calcObj->setLimits((int)limitArray[0], (int)limitArray[1], (int)limitArray[2], (int)limitArray[3], limitArray[4], limitArray[5], (int)limitArray[6], (int)limitArray[7], (int)limitArray[8], (int)limitArray[9], (int)limitArray[10]);
double maxFreq = calcObj->calcMaxFreq((float) dCutLength, (float) dCutTime, (float) dSealTime, (float) dCutSpeed, (float) dDoughHeight);
//delete calcObj;
return maxFreq;
}
そして:
機能は、.defファイルを使用してエクスポートされます。
LIBRARY "calc"
EXPORTS
findMaxFreqEXL = findMaxFreq
findMinSpeedEXL = calcMinSpeed
findMaxSpeedEXL = calcMaxSpeed
createProfileEXL = createProfile
arrayTestEXL = arrayTest
setLimitsEXL = setLimits
そして、それらの機能は、すべてのように私のプロジェクトで定義されています。
生成されたDLLファイルのサイズは192キロバイトで、DUMPBINによると、これらはエクスポートされた関数です:
Release構成でDump of file C:\Redacted\Debug\calcDLL.dll
File Type: DLL
Section contains the following exports for calc.dll
00000000 characteristics
57B17EE6 time date stamp Mon Aug 15 10:35:50 2016
0.00 version
1 ordinal base
6 number of functions
6 number of names
ordinal hint RVA name
1 0 00013339 arrayTestEXL = @ILT+820([email protected]@[email protected])
2 1 00013460 createProfileEXL = @ILT+1115([email protected]@[email protected])
3 2 000138E8 findMaxFreqEXL = @ILT+2275([email protected]@[email protected])
4 3 00013744 findMaxSpeedEXL = @ILT+1855([email protected]@[email protected])
5 4 00013500 findMinSpeedEXL = @ILT+1275([email protected]@[email protected])
6 5 000134F6 setLimitsEXL = @ILT+1265([email protected]@@[email protected])
Summary
1000 .data
2000 .idata
5000 .rdata
2000 .reloc
1000 .rsrc
28000 .text
12000 .textbss
ファイルのみ10キロバイトとDUMPBINでこれを言う:
Dump of file C:\Redacted\Release\calcDLL.dll
File Type: DLL
Summary
1000 .data
1000 .rdata
1000 .reloc
1000 .rsrc
2000 .text
私はVisual Studio Express 2013を使用しています。何が欠けているのですか?
プロセッサマクロに問題があると思われます。 – Afshin
@Afshinの言葉:むしろ無関係な完全なdumpbin出力をポストするのではなく、代わりにコードで関数をエクスポートする方法を投稿してください。 – stijn
@stijn:関数をエクスポートするコードを追加しました... – DrDonut