Discussion:
[omniORB] question(s) regarding omniORB-4.1.1 and VisualStudio2005 (VS2005) manifest files
Nikola Radovanovic
2008-01-01 20:36:58 UTC
Permalink
hi,
I would like to ask following questions regarding omniORB-4.1.1 and
VS2005 manifest files:
According to Microsoft, application (or shared library) generated with
VS2005 needs 2 things to work on target machine without VS2005
installed: proper redistributables installed, and also manifest files
for given exe (dll).
I saw that omniORB-4.1.1 delivers manifest linked to its executables (ie
omninames) as a resource, which is OK, but checking given exe (with
resource hacker tool) - one will see that parameter for mt.exe is wrong
(it should be 1, but it is 2), regarding MS specification which can be
found on http://msdn2.microsoft.com/en-us/library/ms235591.aspx.
Also i have noticed that manifests for shared libraries are generated by
compiler, but neither one dll has linked manifest as a resource.
I would like to know if this 'manifest things' are done deliberately
(and if so-why)?
Personally, i edited win32.mk to correct exe problem, and added a line
to link manifest ot dll's also (patch is attached) . i supose that same
effect can be achieved by changing x86_win32_vs_8.mk, but i have not
done that.

best regards
nikola
-------------- next part --------------
*** ..\mk\win32.mk Thu Dec 27 13:09:30 2007
--- f:\shared\ORB-4.11\official\omniORB-4.1.1\mk\win32.mk Mon Oct 23 10:47:44 2006
***************
*** 173,179 ****
$(RM) $@; \
$(CXXLINK) -out:$@ $(CXXLINKOPTIONS) -PDB:$@.pdb $(IMPORT_LIBRARY_FLAGS) \
$(filter-out $(LibPattern),$^) $$libs; \
! $(MANIFESTTOOL) /outputresource:"$@;#1" /manifest $@.manifest; \
)
endef

--- 173,179 ----
$(RM) $@; \
$(CXXLINK) -out:$@ $(CXXLINKOPTIONS) -PDB:$@.pdb $(IMPORT_LIBRARY_FLAGS) \
$(filter-out $(LibPattern),$^) $$libs; \
! $(MANIFESTTOOL) /outputresource:"$@;#2" /manifest $@.manifest; \
)
endef

***************
*** 181,187 ****
(set -x; \
$(RM) $@; \
$(CLINK) -out:$@ $(CLINKOPTIONS) -PDB:$@.pdb $(IMPORT_LIBRARY_FLAGS) $(filter-out $(LibPattern),$^) $$libs; \
! $(MANIFESTTOOL) /outputresource:"$@;#1" /manifest $@.manifest; \
)
endef

--- 181,187 ----
(set -x; \
$(RM) $@; \
$(CLINK) -out:$@ $(CLINKOPTIONS) -PDB:$@.pdb $(IMPORT_LIBRARY_FLAGS) $(filter-out $(LibPattern),$^) $$libs; \
! $(MANIFESTTOOL) /outputresource:"$@;#2" /manifest $@.manifest; \
)
endef

***************
*** 359,365 ****
$(CXXLINK) -out:$$dllname -DLL $$extralinkoption \
$$defflag -IMPLIB:$@ $(IMPORT_LIBRARY_FLAGS) \
$^ $$extralibs $$resname; \
- $(MANIFESTTOOL) /outputresource:"$$dllname;#2" /manifest $$dllname.manifest; \
$(CP) $@ $$slibname;
endef

--- 359,364 ----
Duncan Grisby
2008-01-10 21:09:37 UTC
Permalink
Post by Nikola Radovanovic
I saw that omniORB-4.1.1 delivers manifest linked to its executables
(ie omninames) as a resource, which is OK, but checking given exe
(with resource hacker tool) - one will see that parameter for mt.exe
is wrong (it should be 1, but it is 2), regarding MS specification
which can be found on
http://msdn2.microsoft.com/en-us/library/ms235591.aspx.
Also i have noticed that manifests for shared libraries are generated
by compiler, but neither one dll has linked manifest as a resource.
I would like to know if this 'manifest things' are done deliberately
(and if so-why)?
I wonder why it works when it has the wrong option? I've applied your
changes in CVS.

By the way, your patch was backwards. It didn't really matter since it
was easy to apply by hand, but for anything more complex, make sure you
do the diff the right way around.

Cheers,

Duncan.
--
-- Duncan Grisby --
-- ***@grisby.org --
-- http://www.grisby.org --
Loading...