View mode: basic / threaded / horizontal-split · Log in · Help
September 17, 2012
undefined reference to `_D6deimos6python6Python12__ModuleInfoZ'
With a deimos header file, I expect to need only to pass the dpath to it 
and the library it references to dmd, e.g.

stuff
 - deimos
  - python
   - Python.d

dmd <otherstuff> -Istuff -L-lpython2.7

I should not need to actually pass stuff/deimos/python/Python.d to dmd.

Unfortunately, that is currently not the case, and I am having a 
difficult time trying to figure out what is getting in my way.

been thumbing through nm output lately.


Anyone have any suggestions?
September 18, 2012
Re: undefined reference to `_D6deimos6python6Python12__ModuleInfoZ'
On 09/17/2012 04:16 PM, Ellery Newcomer wrote:
> With a deimos header file, I expect to need only to pass the dpath to it
> and the library it references to dmd, e.g.
>
> stuff
>   - deimos
>    - python
>     - Python.d
>
> dmd <otherstuff> -Istuff -L-lpython2.7
>
> I should not need to actually pass stuff/deimos/python/Python.d to dmd.
>
> Unfortunately, that is currently not the case, and I am having a
> difficult time trying to figure out what is getting in my way.
>
> been thumbing through nm output lately.
>
>
> Anyone have any suggestions?
>

Found one little gotcha.

In a templated function in my header file, I make a call to enforce. 
When the function is not called [instantiated], all is well. When the 
function is called, it generates yon undefined reference to __ModuleInfoZ.

I guess this is because D needs a pointer to the module in order to look 
up enforce?
September 19, 2012
Re: undefined reference to `_D6deimos6python6Python12__ModuleInfoZ'
On Tuesday, 18 September 2012 at 04:56:27 UTC, Ellery Newcomer 
wrote:

> In a templated function in my header file, I make a call to 
> enforce. When the function is not called [instantiated], all is 
> well. When the function is called, it generates yon undefined 
> reference to __ModuleInfoZ.
>
> I guess this is because D needs a pointer to the module in 
> order to look up enforce?

What does the call to enforce look like? The error isn't from the 
compiler so you are pulling in a symbol which isn't in your 
object files.
September 19, 2012
Re: undefined reference to `_D6deimos6python6Python12__ModuleInfoZ'
On 09/19/2012 01:30 PM, Jesse Phillips wrote:
> On Tuesday, 18 September 2012 at 04:56:27 UTC, Ellery Newcomer wrote:
>
>> In a templated function in my header file, I make a call to enforce.
>> When the function is not called [instantiated], all is well. When the
>> function is called, it generates yon undefined reference to
>> __ModuleInfoZ.
>>
>> I guess this is because D needs a pointer to the module in order to
>> look up enforce?
>
> What does the call to enforce look like? The error isn't from the
> compiler so you are pulling in a symbol which isn't in your object files.

here is an older file, as I haven't committed recently, but it shows the 
identical call:

https://bitbucket.org/ariovistus/pyd/src/364451b5d732/infrastructure/python/python.d#cl-653

making a call to enforce elsewhere doesn't fix the linker problem.
Top | Discussion index | About this forum | D home