You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@qpid.apache.org by "Andrew Stitcher (JIRA)" <qp...@incubator.apache.org> on 2010/04/15 15:14:48 UTC

[jira] Commented: (QPID-2391) Use of global static intializers in code creates problems for a correct Windows static build

    [ https://issues.apache.org/jira/browse/QPID-2391?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12857302#action_12857302 ] 

Andrew Stitcher commented on QPID-2391:
---------------------------------------

The way these plugins are designed they effectively have to be either linked in statically with the application that uses them or they have to be statically linked into a shared object that dynamically loads them. They export no symbols that could be required for a static library type link.

This is so that the same code could be either linked into the app itself or into a loaded shared object/dll.

A possible fix to this problem would be to link the protocol directly into the app rather than into a library that the app depends on.

> Use of global static intializers in code creates problems for a correct Windows static build
> --------------------------------------------------------------------------------------------
>
>                 Key: QPID-2391
>                 URL: https://issues.apache.org/jira/browse/QPID-2391
>             Project: Qpid
>          Issue Type: Improvement
>          Components: C++ Client
>         Environment: Windows XP SP3
> Visual C++ 9.0
>            Reporter: Pete MacKinnon
>
> The use of global static intilaizers like the StaticInit struct in:
>  qpid\cpp\src\qpid\client\windows\TCPConnector.cpp
>  qpid\cpp\src\qpid\client\windows\SslConnector.cpp
> won't work at runtime in a static compile/link of qpidc. The transport factory registrations won't happen since the linker will strip out these unreferenced symbols. Not a problem in the DLL model. There are few options for addressing this in the linker command line (e.g., /INCLUDE:<mangled name of symbol>), in the devenv ("Link Library Dependencies", "Use Library Dependency Inputs"), or writing function wrappers to force load - none of which seem very useful.
> There may be more instances of this pattern in the code elsewhere.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: https://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:dev-subscribe@qpid.apache.org