digitalmars.D.bugs - cannot export whole class
- TVMAN (62/62) Aug 31 2006 sorry my poor english. there are 3 bugs(questions):
- Thomas Kuehne (38/90) Sep 13 2006 -----BEGIN PGP SIGNED MESSAGE-----
sorry my poor english. there are 3 bugs(questions): 1. ------------------------------------------------ export class CMyClass { public: ... } ------------------------------------------------ this will not export any method in DLL. 2. can dmd generate a "pure" header file? that is, no any code in generated .di file. ---------------------- void test() { int a = 0; } ---------------------- this function will not changed in .di file ---------------------- void test() { if ( .. )..; int a = 0; } ---------------------- this function will become void test(); this is right 3. "dmd -release -O ..." works not fine, when compile dwt's ole_com example, some useful code be "optimized out". code in oleclientsite.d: protected GUID* getClassID(char[] clientName) { // create a GUID struct to hold the result GUID* guid = new GUID(); // create a null terminated array of wchar wchar* buffer = null; if (clientName !is null) { buffer = Converter.StrToWCHARz(clientName); } if (COM.CLSIDFromProgID(buffer, guid) != COM.S_OK){ HRESULT result = COM.CLSIDFromString(buffer, guid); if (result != COM.S_OK) OLE.error(__FILE__, __LINE__, OLE.ERROR_INVALID_CLASSID, result); } return guid; } ------------------------------------- if (clientName !is null) { buffer = Converter.StrToWCHARz(clientName); } --------------------------------------- this have optimizition error but ------------------------------------- if (clientName != null) { buffer = Converter.StrToWCHARz(clientName); } --------------------------------------- have not optimizition error
Aug 31 2006
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 TVMAN schrieb am 2006-08-31: <snip>2. can dmd generate a "pure" header file? that is, no any code in generated .di file. ---------------------- void test() { int a = 0; } ---------------------- this function will not changed in .di file ---------------------- void test() { if ( .. )..; int a = 0; } ---------------------- this function will become void test(); this is rightThis is a bug, please file file it at http://d.puremagic.com/issues/3. "dmd -release -O ..." works not fine, when compile dwt's ole_com example, some useful code be "optimized out". code in oleclientsite.d: protected GUID* getClassID(char[] clientName) { // create a GUID struct to hold the result GUID* guid = new GUID(); // create a null terminated array of wchar wchar* buffer = null; if (clientName !is null) { buffer = Converter.StrToWCHARz(clientName); } if (COM.CLSIDFromProgID(buffer, guid) != COM.S_OK){ HRESULT result = COM.CLSIDFromString(buffer, guid); if (result != COM.S_OK) OLE.error(__FILE__, __LINE__, OLE.ERROR_INVALID_CLASSID, result); } return guid; } ------------------------------------- if (clientName !is null) { buffer = Converter.StrToWCHARz(clientName); } --------------------------------------- this have optimizition error but ------------------------------------- if (clientName != null) { buffer = Converter.StrToWCHARz(clientName); } --------------------------------------- have not optimizition errorWhat exactly is the optimizition error? (I'm not a Windows users.) Please note that !is and != aren't synonyms: Prints only "!is". Prints "!is" and "!=". Thomas -----BEGIN PGP SIGNATURE----- iD8DBQFFCJRBLK5blCcjpWoRAjAwAJ9uvXWu5evH40/HbTgPtMIIMpWSdQCgodKx q3NigmkdKVZX4Y0jziQVqzs= =lhB2 -----END PGP SIGNATURE-----
Sep 13 2006