Ticket #330 (new enhancement)

Opened 6 years ago

Last modified 2 years ago

Symbol export DEFINEs for windows platforms

Reported by: Sleek Owned by: vtchill
Priority: high Milestone: 0.4.0
Component: engine Version: trunk
Severity: major Keywords:
Cc: Blocked By:
Blocking: Time planned:
Time remaining: Time spent:

Description

On windows, we need to use

__declspec(dllexport)
__declspec(dllimport)

when declaring symbols that we want to be accessible to outside binaries linking to it.

Please see these links for more thorough explanations:

 http://msdn.microsoft.com/en-us/library/a90k134d(VS.80).aspx  http://www.cubewano.org/oink/ticket/118

You can check on windows that lib_fife.def only contains init_fife from fife_wrapper.cxx when fife is compiled.

This should be an easy task, but a lot of repetitive work involved. I'm marking it as starting task.

Change History

comment:1 Changed 6 years ago by mvbarracuda

I was worried that declspec would be MSVC-exclusive but it seems to work with mingw as well:  http://sig9.com/node/35

comment:2 Changed 5 years ago by phoku

  • Milestone changed from Proposal to 2009.1

comment:3 Changed 5 years ago by vtchill

  • Keywords starting removed
  • Owner changed from FIFE to vtchill
  • Type changed from defect to enhancement
  • Priority changed from high to normal

I am changing this to an enhancement because it does not have any impact on our normal operation. It does however need to be implemented if we want to support C++ clients linking to fife dynamically (building fife as a dll or shared object). Clients can build fife as a static library and link statically to work around this currently.

This task is something that needs to be thought about carefully because it is essentially going to dictate what our exposed API to the engine will look like to clients using C++. Once the API is out there and someone is using it, it will make changing the API more difficult.

comment:4 Changed 5 years ago by prock

  • Milestone changed from 0.3.0 to 0.3.2

As no one is actually using a windows DLL at the moment this is being moved to 0.3.2.

comment:5 Changed 4 years ago by prock

  • Priority changed from normal to high
  • Severity changed from normal to major
  • Milestone changed from 0.3.2 to 0.3.4

Moving to 0.3.4 where we hope to add shared library support as one of the major tickets.

comment:6 Changed 2 years ago by prock

(In [3888]) * Added getRevision() to FIFE to allow clients to query the revision FIFE was built from. This only works if svnversion is present in the users PATH. Windows users will always get 0 if they use TortoiseSVN atm. If users have a mixed revision the reported rev number will also be 0. (this has yet to be tested on linux)

  • Added some defines in export.h which can be used to better define the FIFE API (can hide symbols as well). This could be used when creating a FIFE DLL but there still is a lot of work to get FIFE working as a DLL properly. refs #330
Note: See TracTickets for help on using tickets.