installer?

uahh, i just saw, while testing if it works just by copying some needed dlls into my games directory, that my exe cant be execute on a other computer.

how to publish a panda application? packpanda isnt working, its in need of a python main. or do i have to write a python main.py which is opening my exe?

As of 1.7.0, you publish a Panda application by packing it into a p3d file. See the big chapter in the manual on this subject, titled “Distributing Panda3D Applications”.

Edit: sorry, just realized you were talking about a C++ application. For a C++ application it’s less automatic. But you should be able to put your exe and all the dll’s it requires into the same directory and run it from there. You can also still put it into a p3d file by writing a main.py, as you suggest, and packing that; but it means your C++ code has to be written to be callable from Python.

David

cool thanks, maybe i missed some dlls.

i tried it now again. and i had to figure out, that the problem is a different thing.

i got this side-by-side error.

first off, i dont want that someone needs to install a redistributable package.and if im changing the code generation, from multithreaded-dll to /MT. i get this error: the application faild to intialize properly…

what the best way to compile, that the application is running on other computers (win OS), without installing a redistributable package. maybe there also something in the manual, but i couldnt find it. sorry to ask something very fundamental, but im pretty new in working with c++.

this page ->
http://www.panda3d.org/manual/index.php/How_to_build_a_CXX_Panda3D_game_using_Microsoft_Visual_Studio_2008
do not fix my problem.

thanks alot for help.

Try including the *.manifest files in your package too.

i tried this already, but its not working. same error -> side-by-side…

Have you copied all the dlls and all the manifests in built/bin?

yes, im getting by generating with /MT:
the application faild to intialize properly…

and with /MDd:
the side-by-side

you dont mean the panda bin folder right? this i havnt tried. but i dont think you mean that.

so now i cant compile it anymore.

a error:~ window set a break, that may depends on a defect heap…

please paste the error exactly as it is

do you understand german?

HEAP[*.exe]: Invalid address specified to RtlFreeHeap( 01380000, 00C749D0 )

windows triggered a breakpoint.

this depends maybe on a defect heap, which are in the *.exe or in one of the loaded dll.

:D this is maybe related by pressing F12 while executing.

more analyseinformation may found in the outputwindow.

this error is only displaying when i try to include my manifest.

is it maybe related to, that i need to have the cg.dll in my release directory? this is maybe interrupting the heap.

oh, i just saw, the gl is now working without having a a copy of cg.dll in the release directory. i will it soon again (after simpsons)

hmm, now it doesnt work again, i need to have a copy of the cg.dll file in my compiling directory. :unamused:

i think, this is interrupting the heap.

how can i fix this? all other dll´s are loading from the bin directoey, just this cg.dll not.

neither i cant load this dll manually!

there i get this error:

"...c:\panda3d-1.7.0\bin\cg.dll": Error loading type library/DLL.

Is there another version of cg.dll somewhere in your path?

not at this test.

but if i wanna use openGL, i have to copy the cg.dll into my project folder. where i think, this interrupt the heap. thats why, i wanna load this cg.dll manually. like i said, the cg.dll doesnt get loaded automatical, like all the other dll´s do. or it gets loaded, but it crashs. maybe this is making this conflict, that i cant load it manually. as next i try to kick the entries out of the vc++ porject directory. and try to load this bunch of dlls manually. like #include “path” if this isnt work either im out of any idea at moment.

its neither working.

:smiley: very strange, i made quick a seperate test project, i thought its better.

look (whats happening now?):

main.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""__declspec(dllimport) public: class PointerTo<class DisplayRegion> __thiscall GraphicsOutput::get_active_display_region(int)const " (__imp_?get_active_display_region@GraphicsOutput@@QBE?AV?$PointerTo@VDisplayRegion@@@@H@Z)".
1>main.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""__declspec(dllimport) public: __thiscall BitMask<unsigned int,32>::~BitMask<unsigned int,32>(void)" (__imp_??1?$BitMask@I$0CA@@@QAE@XZ)".
1>main.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""__declspec(dllimport) public: static class BitMask<unsigned int,32> __cdecl BitMask<unsigned int,32>::bit(int)" (__imp_?bit@?$BitMask@I$0CA@@@SA?AV1@H@Z)".
1>main.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""__declspec(dllimport) public: static class BitMask<unsigned int,32> __cdecl BitMask<unsigned int,32>::lower_on(int)" (__imp_?lower_on@?$BitMask@I$0CA@@@SA?AV1@H@Z)".
1>main.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""__declspec(dllimport) public: void __thiscall PandaFramework::main_loop(void)" (__imp_?main_loop@PandaFramework@@QAEXXZ)".
1>main.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""__declspec(dllimport) public: class WindowFramework * __thiscall PandaFramework::open_window(void)" (__imp_?open_window@PandaFramework@@QAEPAVWindowFramework@@XZ)".
1>main.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""__declspec(dllimport) public: void __thiscall PandaFramework::close_framework(void)" (__imp_?close_framework@PandaFramework@@QAEXXZ)".
1>main.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""__declspec(dllimport) public: void __thiscall PandaFramework::open_framework(int &,char * * &)" (__imp_?open_framework@PandaFramework@@QAEXAAHAAPAPAD@Z)".
1>main.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""__declspec(dllimport) public: virtual __thiscall PandaFramework::~PandaFramework(void)" (__imp_??1PandaFramework@@UAE@XZ)".
1>main.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""__declspec(dllimport) public: __thiscall PandaFramework::PandaFramework(void)" (__imp_??0PandaFramework@@QAE@XZ)".
1>main.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""__declspec(dllimport) private: static class TypeHandle DisplayRegion::_type_handle" (__imp_?_type_handle@DisplayRegion@@0VTypeHandle@@A)".
1>main.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""__declspec(dllimport) private: static class TypeHandle TypeHandle::_none" (__imp_?_none@TypeHandle@@0V1@A)".
1>main.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""__declspec(dllimport) private: static class TypeHandle ClockObject::_type_handle" (__imp_?_type_handle@ClockObject@@0VTypeHandle@@A)".
1>main.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""__declspec(dllimport) public: void __thiscall PandaFramework::set_window_title(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (__imp_?set_window_title@PandaFramework@@QAEXABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z)".
1>main.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""__declspec(dllimport) public: class GraphicsWindow * __thiscall WindowFramework::get_graphics_window(void)const " (__imp_?get_graphics_window@WindowFramework@@QBEPAVGraphicsWindow@@XZ)".
1>main.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""__declspec(dllimport) public: static void __cdecl DisplayRegion::init_type(void)" (__imp_?init_type@DisplayRegion@@SAXXZ)".
1>main.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""__declspec(dllimport) public: static class TypeHandle __cdecl DisplayRegion::get_class_type(void)" (__imp_?get_class_type@DisplayRegion@@SA?AVTypeHandle@@XZ)".
1>main.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""__declspec(dllimport) public: void __thiscall DrawableRegion::set_clear_color(class LVecBase4f const &)" (__imp_?set_clear_color@DrawableRegion@@QAEXABVLVecBase4f@@@Z)".
1>main.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""__declspec(dllimport) public: static class ClockObject * __cdecl ClockObject::get_global_clock(void)" (__imp_?get_global_clock@ClockObject@@SAPAV1@XZ)".
1>main.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""__declspec(dllimport) public: static void __cdecl ClockObject::init_type(void)" (__imp_?init_type@ClockObject@@SAXXZ)".
1>main.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""__declspec(dllimport) public: static class TypeHandle __cdecl ClockObject::get_class_type(void)" (__imp_?get_class_type@ClockObject@@SA?AVTypeHandle@@XZ)".
1>main.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""__declspec(dllimport) public: __thiscall LVecBase4f::~LVecBase4f(void)" (__imp_??1LVecBase4f@@QAE@XZ)".
1>main.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""__declspec(dllimport) public: __thiscall LVecBase4f::LVecBase4f(float,float,float,float)" (__imp_??0LVecBase4f@@QAE@MMMM@Z)".
1>main.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""__declspec(dllimport) protected: __thiscall PointerToVoid::~PointerToVoid(void)" (__imp_??1PointerToVoid@@IAE@XZ)".
1>main.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""__declspec(dllimport) protected: __thiscall PointerToVoid::PointerToVoid(void)" (__imp_??0PointerToVoid@@IAE@XZ)".
1>main.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""__declspec(dllimport) public: void __thiscall ReferenceCount::ref(void)const " (__imp_?ref@ReferenceCount@@QBEXXZ)".
1>main.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""__declspec(dllimport) public: static void __cdecl MemoryUsage::update_type(class ReferenceCount *,class TypeHandle)" (__imp_?update_type@MemoryUsage@@SAXPAVReferenceCount@@VTypeHandle@@@Z)".
1>main.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""__declspec(dllimport) public: static bool __cdecl MemoryUsage::get_track_memory_usage(void)" (__imp_?get_track_memory_usage@MemoryUsage@@SA_NXZ)".
1>main.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""__declspec(dllimport) public: static class TypeHandle __cdecl TypeHandle::none(void)" (__imp_?none@TypeHandle@@SA?AV1@XZ)".
1>main.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""__declspec(dllimport) public: bool __thiscall TypeHandle::operator!=(class TypeHandle const &)const " (__imp_??9TypeHandle@@QBE_NABV0@@Z)".
1>main.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""__declspec(dllimport) public: bool __thiscall TypeHandle::operator==(class TypeHandle const &)const " (__imp_??8TypeHandle@@QBE_NABV0@@Z)".
1>main.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""__declspec(dllimport) public: __thiscall TypeHandle::TypeHandle(class TypeHandle const &)" (__imp_??0TypeHandle@@QAE@ABV0@@Z)".
1>main.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""__declspec(dllimport) public: __thiscall TypeHandle::TypeHandle(void)" (__imp_??0TypeHandle@@QAE@XZ)".
1>main.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""__declspec(dllimport) public: static void __cdecl AtomicAdjustDummyImpl::inc(long &)" (__imp_?inc@AtomicAdjustDummyImpl@@SAXAAJ@Z)".
1>C:\Users\dirk\Documents\Visual Studio 2008\Projects\publishTEST\Release\publishTEST.exe : fatal error LNK1120: 34 nicht aufgelöste externe Verweise.

here the code:

#include "pandaFramework.h"
#include "pandaSystem.h"

PandaFramework framework;
WindowFramework *window;
PT(ClockObject) globalClock = ClockObject::get_global_clock();

void windowOPEN() {
	framework.set_window_title("test");
	window = framework.open_window();
	window->get_graphics_window()->get_active_display_region(0)->set_clear_color(Colorf(1,1,1,1));
}

int main(int argc, char *argv[]) {
	framework.open_framework(argc, argv);
    windowOPEN();

	framework.main_loop();
    framework.close_framework();
    return (0);
}

forget this error!
vs lost my linker input entries. thats sometimes happening, when im creating a new project. there i have to insert this two times.

is there a other way too to embed a dll into a project in vs, like to link to a path? the #import thing doesnt work, but maybe there is a way in vs too to def. a unique file?

whats the most stable version of panda for developing in c++? i actually downloaded 1.5.4, which is marked as stable. but not for c++ developing.

there i got 15 errors at my test programm (shown above).

here the erros:

c:\panda3d-1.5.4\include\cmath.I(154) : warning C4244: 'return': Konvertierung von 'double' in 'float', möglicher Datenverlust
1>c:\panda3d-1.5.4\include\configVariable.I(301) : warning C4244: 'Argument': Konvertierung von 'PN_int64' in 'int', möglicher Datenverlust
1>c:\panda3d-1.5.4\include\configVariableInt64.I(43) : warning C4244: 'Argument': Konvertierung von 'PN_int64' in 'int', möglicher Datenverlust
1>c:\panda3d-1.5.4\include\configVariableInt64.I(62) : warning C4244: 'Argument': Konvertierung von 'PN_int64' in 'int', möglicher Datenverlust
1>c:\panda3d-1.5.4\include\threadDummyImpl.I(125) : error C2079: 'rqtp' verwendet undefiniertes struct 'ThreadDummyImpl::sleep::timespec'
1>c:\panda3d-1.5.4\include\threadDummyImpl.I(126) : error C2228: Links von ".tv_sec" muss sich eine Klasse/Struktur/Union befinden.
1>        Typ ist 'int'
1>c:\panda3d-1.5.4\include\threadDummyImpl.I(127) : error C2228: Links von ".tv_nsec" muss sich eine Klasse/Struktur/Union befinden.
1>        Typ ist 'int'
1>c:\panda3d-1.5.4\include\threadDummyImpl.I(127) : error C2228: Links von ".tv_sec" muss sich eine Klasse/Struktur/Union befinden.
1>        Typ ist 'int'
1>c:\panda3d-1.5.4\include\threadDummyImpl.I(128) : error C3861: "nanosleep": Bezeichner wurde nicht gefunden.
1>c:\panda3d-1.5.4\include\thread.I(38) : warning C4355: this': wird in Initialisierungslisten für Basisklasse verwendet
1>c:\panda3d-1.5.4\include\thread.I(56) : warning C4355: this': wird in Initialisierungslisten für Basisklasse verwendet
1>c:\panda3d-1.5.4\include\socket_portable.h(362) : error C2146: Syntaxfehler: Fehlendes ';' vor Bezeichner 'Host'
1>c:\panda3d-1.5.4\include\socket_portable.h(362) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
1>c:\panda3d-1.5.4\include\socket_portable.h(362) : error C2146: Syntaxfehler: Fehlendes ';' vor Bezeichner 'Type'
1>c:\panda3d-1.5.4\include\socket_portable.h(362) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
1>c:\panda3d-1.5.4\include\socket_portable.h(362) : error C2146: Syntaxfehler: Fehlendes ';' vor Bezeichner 'defined'
1>c:\panda3d-1.5.4\include\socket_portable.h(362) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
1>c:\panda3d-1.5.4\include\socket_portable.h(362) : error C2143: Syntaxfehler: Es fehlt ';' vor '!'
1>c:\panda3d-1.5.4\include\socket_portable.h(362) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
1>c:\panda3d-1.5.4\include\socket_portable.h(362) : error C2059: Syntaxfehler: '!'
1>c:\panda3d-1.5.4\include\socket_portable.h(363) : fatal error C1189: #error :   Fatal
1>Das Buildprotokoll wurde unter "file://c:\Users\dirk\Documents\Visual Studio 2008\Projects\publishTEST\publishTEST\Release\BuildLog.htm" gespeichert.
1>publishTEST - 15 Fehler, 6 Warnung(en)