{"action":"created","issue":{"url":"https://api.github.com/repos/vxl/vxl/issues/299","repository_url":"https://api.github.com/repos/vxl/vxl","labels_url":"https://api.github.com/repos/vxl/vxl/issues/299/labels{/name}","comments_url":"https://api.github.com/repos/vxl/vxl/issues/299/comments","events_url":"https://api.github.com/repos/vxl/vxl/issues/299/events","html_url":"https://github.com/vxl/vxl/pull/299","id":155396538,"number":299,"title":"Make short vnl_matrix_fixed methods explicitly inline.","user":{"login":"thewtex","id":25432,"avatar_url":"https://avatars.githubusercontent.com/u/25432?v=3","gravatar_id":"","url":"https://api.github.com/users/thewtex","html_url":"https://github.com/thewtex","followers_url":"https://api.github.com/users/thewtex/followers","following_url":"https://api.github.com/users/thewtex/following{/other_user}","gists_url":"https://api.github.com/users/thewtex/gists{/gist_id}","starred_url":"https://api.github.com/users/thewtex/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/thewtex/subscriptions","organizations_url":"https://api.github.com/users/thewtex/orgs","repos_url":"https://api.github.com/users/thewtex/repos","events_url":"https://api.github.com/users/thewtex/events{/privacy}","received_events_url":"https://api.github.com/users/thewtex/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":14,"created_at":"2016-05-18T01:09:04Z","updated_at":"2016-05-18T17:24:56Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/vxl/vxl/pulls/299","html_url":"https://github.com/vxl/vxl/pull/299","diff_url":"https://github.com/vxl/vxl/pull/299.diff","patch_url":"https://github.com/vxl/vxl/pull/299.patch"},"body":"These short methods are declared inline, which is true for many corresponding\r\nvnl_vector_fixed methods.\r\n\r\nThis is to address the warnings:\r\n\r\n  /usr/bin/ld.gold: warning: hidden symbol 'vnl_matrix_fixed<double, 3u,\r\n  3u>::print(std::ostream&) const' in\r\n  CMakeFiles/ITKRegistrationMethodsv4Python.dir/itkImageRegistrationMethodv4Python.cpp.o\r\n  is referenced by DSO ../../../lib/libitkvnl_algo-4.10.so.1\r\n\r\n  /usr/bin/ld.gold: warning: hidden symbol 'vnl_matrix_fixed<double, 2u,\r\n  2u>::add(double const*, double, double*)' in\r\n  CMakeFiles/ITKCommonPython.dir/vnl_matrix_fixedPython.cpp.o is referenced by\r\n  DSO ../../../lib/libITKVNLInstantiation-4.10.so.1\r\n\r\nVNL does not currently provide explicit symbol visibility specification."},"comment":{"url":"https://api.github.com/repos/vxl/vxl/issues/comments/220098769","html_url":"https://github.com/vxl/vxl/pull/299#issuecomment-220098769","issue_url":"https://api.github.com/repos/vxl/vxl/issues/299","id":220098769,"user":{"login":"bradking","id":87268,"avatar_url":"https://avatars.githubusercontent.com/u/87268?v=3","gravatar_id":"","url":"https://api.github.com/users/bradking","html_url":"https://github.com/bradking","followers_url":"https://api.github.com/users/bradking/followers","following_url":"https://api.github.com/users/bradking/following{/other_user}","gists_url":"https://api.github.com/users/bradking/gists{/gist_id}","starred_url":"https://api.github.com/users/bradking/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bradking/subscriptions","organizations_url":"https://api.github.com/users/bradking/orgs","repos_url":"https://api.github.com/users/bradking/repos","events_url":"https://api.github.com/users/bradking/events{/privacy}","received_events_url":"https://api.github.com/users/bradking/received_events","type":"User","site_admin":false},"created_at":"2016-05-18T17:24:56Z","updated_at":"2016-05-18T17:24:56Z","body":"VXL uses explicit instantiation for many of its class templates.  The fact that we happened to encounter visibility problems with `vnl_matrix_fixed` seems to be the only reason this proposed change is isolated to this one template.  If there is a fundamental problem with the explicit instantiation approach then it would need to be resolved with a sweeping change, not just an isolated hack as proposed here.  I doubt that is the case, as vxl has gotten along just fine with the approach for almost 20 years.\r\n\r\nThere must be another way to resolve this problem.  The error messages shown refer to two locations in ITK and none in VXL libraries.  If ITK is using some `-fvisibility` flags to cause this issue then it should be updated to not do that for the files in question.\r\n"}}