IID mess

Daniel Jeliński djelinski1 at gmail.com
Fri May 3 08:03:22 CDT 2013


Thanks, INITGUID was the piece I was missing.


2013/5/3 Damjan Jovanovic <damjan.jov at gmail.com>

> Check that you are only doing ONE of the following:
> 1. Use "-luuid", which you are using
> 2. #include <initguid.h> or #define INITGUID (which is what it does)
> before including the relevant COM headers
> Never both, or you'll get those multiple definitions.
>
> Damjan
>
>
> On Fri, May 3, 2013 at 11:31 AM, Daniel Jeliński <djelinski1 at gmail.com>wrote:
>
>> Additional info:
>> after my patches amstream fails to link complaining about duplicate
>> IID_IResourceManager:
>> ~/wine-git/dlls/amstream$ make
>> ../../tools/winegcc/winegcc -m32 -B../../tools/winebuild --sysroot=../..
>> -fasynchronous-unwind-tables -shared ./amstream.spec amstream.o audiodata.o
>> main.o mediastream.o mediastreamfilter.o     amstream_classes_r.res
>> version.res    -o amstream.dll.so  -lstrmiids -lstrmbase -luuid -lole32
>> -ladvapi32  ../../libs/port/libwine_port.a
>> ../../dlls/uuid/libuuid.a(uuid.o):(.rodata+0x540): multiple definition of
>> `IID_IResourceManager'
>> ../../dlls/strmiids/libstrmiids.a(strmiids.o):(.rodata+0x5e0): first
>> defined here
>> winebuild: /usr/bin/ld failed with status 1
>> winegcc: ../../tools/winebuild/winebuild failed
>>
>> if I don't add the DTC headers to uuid, linking xolehlp fails:
>> ~/wine-git/dlls/xolehlp$ make
>> ../../tools/winegcc/winegcc -m32 -B../../tools/winebuild --sysroot=../..
>> -fasynchronous-unwind-tables -shared ./xolehlp.spec xolehlp.o           -o
>> xolehlp.dll.so  -luuid
>> ../../libs/port/libwine_port.a
>>
>> xolehlp.o: In function `TransactionDispenser_QueryInterface':
>> /home/daniel/wine-git/dlls/xolehlp/xolehlp.c:170: undefined reference to
>> `IID_ITransactionDispenser'
>> /usr/bin/ld: xolehlp.o: relocation R_386_GOTOFF against undefined hidden
>> symbol `IID_ITransactionDispenser' can not be used when making a shared
>> object
>> /usr/bin/ld: final link failed: Bad value
>>
>> How do I know which dll should export these IIDs?
>>
>>
>> 2013/5/2 Daniel Jeliński <djelinski1 at gmail.com>
>>
>>> Hello,
>>> I just tried compiling all of Wine with my patch series applied and, to
>>> my surprise, compilation failed. The reason was that IID_IResourceManager
>>> was already declared elsewhere.
>>>
>>> Now, according to this page:
>>>
>>> http://mikolajapp.appspot.com/uuid/query?q={56a868ac-0ad4-11ce-b03a-0020af0ba770}
>>> Wine's strmif.h declares IID_IResourceManager, while SDK declares
>>> __declspec(uuid) as IResourceManager.
>>> SDK declares IID_IResourceManager elsewhere:
>>>
>>> http://mikolajapp.appspot.com/uuid/query?q={03741d21-87eb-11ce-8081-0080c758527e}
>>> I'm new to COM, so I'm not sure what exactly is the difference between
>>> IID and declspec(uuid). Could anyone explain or suggest a fix?
>>> Thanks,
>>> Daniel
>>>
>>
>>
>>
>>
>>
>
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.winehq.org/pipermail/wine-devel/attachments/20130503/4572f136/attachment-0001.html>


More information about the wine-devel mailing list