I have a custom class that I’m trying to use interrogate on. It is just one library in a module that I plan on eventually adding additional libraries to.
Basically, library: playerEntBase module: pFpsEnt
However, for some reason interrogate_module is only generating a pyinit_playerEntBase function, and no pyinit_pFpsEnt.
I’ve so far been manually renaming the compiled pyd file to playerEntBase.pyd but this nullifies my plans to have more libraries in the module, and makes me wonder if this could be incorrect usage.
You don’t need to generate a module after each survey, you can do it as you add all the classes to it. That is, call a survey for each class or function, then create a module that will contain them all.
Update: I have gotten the module builder to work partially but it’s giving me a lot of errors relating to the symbols inherited from the panda3d libraries. At time of writing it’s getting late, so I’ll take a break from that for now.
Edit: It’s morning, and I’ve decided that it’s not really worth it to continue with the module builder. This is because while some strange behaviors (this topic) have occurred, I’ve actually got interrogate on it’s own to work perfectly. Everything i’m still struggling with mostly relates to keeping the end product organized and intuitive, since I’m working on a project I want to make publicly available eventually.
The main reason I don’t want to continue with the module builder is that it doesn’t seem to call -Import panda3d.core on interrogate_module. I’m currently trying to get my module to work without requiring any additional imports, so the module builder doesn’t currently seem like the best path for me right now.
(I’ve also have a thread here about dealing with inheritance in interrogate.)
I removed the -Library option from the interrogate_module step entirely. This led to the init function looking like this:
extern "C" EXPORT_CLASS PyObject *PyInit_();
This is arguably worse than what was happening before. Since now I can’t just rename the pyd file to match the library name instead of the module name.
Please note that I am still providing the module name to interrogate_module. said module name is only used once in the whole generated file, for python 2 code.
I actually did eventually get this working, I just forgot to post here.
The problem was that I was supposed to pass the eventual name of the pyd file to -library, while I was passing it to -module, as I thought the manual was telling me to. However, I realized just today that this may have been a result of me embarrassingly misreading the manual page for interrogate. It says:
Note that the name of the library must be the same as the one passed to the -module option.
which I interpreted as "if you pass ‘my_module’ to the parameter ‘-module’, make sure your library is named “my_module.pyd’.”
What I think the writer of that page actually meant was “make sure the name of your library is the same as the name you pass to interrogate_module.” (as in the ‘-library’ parameter.)