I can’t build if i have 2 native extension. If i have only one of them everthing is ok. What am I doing wrong?
Extension 1
// myextension.cpp
// Extension lib defines
#define EXTENSION_NAME NativeDraw
#define LIB_NAME "NativeDraw"
#define MODULE_NAME "native_draw"
// include the Defold SDK
#include <dmsdk/sdk.h>
static int drawPixels(lua_State* L)
{
dmScript::LuaHBuffer* buffer = dmScript::CheckBuffer(L, 2);
uint8_t* stream = 0x0;
uint32_t size_ignored = 0;
dmBuffer::HBuffer hBuffer = buffer->m_Buffer;
dmBuffer::Result r = dmBuffer::GetStream(hBuffer, dmHashString64("rgb"), (void**)&stream, &size_ignored);
//printf("size:%s",size_ignored);
lua_getfield(L, 1, "width");
lua_getfield(L, 1, "height");;
double width = luaL_checknumber(L, -2);
double height = luaL_checknumber(L, -1);
lua_pop(L, 1);
lua_pop(L, 1);
double size = width * height;
lua_pushstring(L,"stream");
lua_gettable(L, -3 );
lua_pushstring(L,"leds");
lua_gettable(L, -4 );
for(int i=1; i<= size;i++){
lua_rawgeti(L,-1,i);
int color = (int)luaL_checknumber(L, -1);
lua_pop(L, 1);
int r = color >> 16;
int g = (color & 0x00FF00) >> 8;
int b= color & 0x0000ff;
int id = i * 3;
stream[id - 3] = r;
stream[id - 2] = g;
stream[id - 1] = b;
//printf("i:%s",i);
}
lua_pop(L,1);
return 1;
}
// Functions exposed to Lua
static const luaL_reg Module_methods[] =
{
{"draw_pixels", drawPixels},
{0, 0}
};
static void LuaInit(lua_State* L)
{
int top = lua_gettop(L);
// Register lua names
luaL_register(L, MODULE_NAME, Module_methods);
lua_pop(L, 1);
assert(top == lua_gettop(L));
}
dmExtension::Result AppInitializeMyExtension(dmExtension::AppParams* params)
{
return dmExtension::RESULT_OK;
}
dmExtension::Result InitializeMyExtension(dmExtension::Params* params)
{
// Init Lua
LuaInit(params->m_L);
printf("Registered %s Extension\n", MODULE_NAME);
return dmExtension::RESULT_OK;
}
dmExtension::Result AppFinalizeMyExtension(dmExtension::AppParams* params)
{
return dmExtension::RESULT_OK;
}
dmExtension::Result FinalizeMyExtension(dmExtension::Params* params)
{
return dmExtension::RESULT_OK;
}
DM_DECLARE_EXTENSION(EXTENSION_NAME, LIB_NAME, AppInitializeMyExtension, AppFinalizeMyExtension, InitializeMyExtension, 0, 0, FinalizeMyExtension)
Extension 2
// myextension.cpp
// Extension lib defines
#define EXTENSION_NAME NativeRaycasting
#define LIB_NAME "NativeRaycasting"
#define MODULE_NAME "native_raycasting"
// include the Defold SDK
#include <dmsdk/sdk.h>
static int castRay(lua_State* L)
{
return 1;
}
// Functions exposed to Lua
static const luaL_reg Module_methods[] =
{
{"cast_ray", castRay},
{0, 0}
};
static void LuaInit(lua_State* L)
{
int top = lua_gettop(L);
// Register lua names
luaL_register(L, MODULE_NAME, Module_methods);
lua_pop(L, 1);
assert(top == lua_gettop(L));
}
dmExtension::Result AppInitializeMyExtension(dmExtension::AppParams* params)
{
return dmExtension::RESULT_OK;
}
dmExtension::Result InitializeMyExtension(dmExtension::Params* params)
{
// Init Lua
LuaInit(params->m_L);
printf("Registered %s Extension\n", MODULE_NAME);
return dmExtension::RESULT_OK;
}
dmExtension::Result AppFinalizeMyExtension(dmExtension::AppParams* params)
{
return dmExtension::RESULT_OK;
}
dmExtension::Result FinalizeMyExtension(dmExtension::Params* params)
{
return dmExtension::RESULT_OK;
}
DM_DECLARE_EXTENSION(EXTENSION_NAME, LIB_NAME, AppInitializeMyExtension, AppFinalizeMyExtension, InitializeMyExtension, 0, 0, FinalizeMyExtension)
Errors
clojure.lang.ExceptionInfo: Failed to build engine, status 422: wine cl.exe /nologo /TP /O2 /Oy- /Z7 /MT /D__STDC_LIMIT_MACROS /DWINVER=0x0600 /D_WIN32_WINNT=0x0600 /DWIN32 /D_CRT_SECURE_NO_WARNINGS /wd4200 /W3 /EHsc /DDM_PLATFORM_WINDOWS /DLUA_BYTECODE_ENABLE /Iupload/native_draw/include /I/var/extender/sdk/0faa10db6bb28907d67358ad5810f3962437f3fd/defoldsdk//include /I/var/extender/sdk/0faa10db6bb28907d67358ad5810f3962437f3fd/defoldsdk//sdk/include /IC:/ProgramFilesx86/MicrosoftVisualStudio14.0/VC/INCLUDE /IC:/ProgramFilesx86/MicrosoftVisualStudio14.0/VC/ATLMFC/INCLUDE /IC:/ProgramFilesx86/WindowsKits/10/include/10.0.10240.0/ucrt /IC:/ProgramFilesx86/WindowsKits/NETFXSDK/4.6.1/include/um /IC:/ProgramFilesx86/WindowsKits/8.1/include/shared /IC:/ProgramFilesx86/WindowsKits/8.1/include/um /IC:/ProgramFilesx86/WindowsKits/8.1/include/winrt upload/native_draw/src/native_draw.cpp /c /Fobuild/native_draw.cpp_0.o
native_draw.cpp
wine lib.exe /nologo /OUT:/tmp/job1258127913073868038/build/1b593900-1ca4-486b-9dc7-676989f086e5.lib build/native_draw.cpp_0.o
wine cl.exe /nologo /TP /O2 /Oy- /Z7 /MT /D__STDC_LIMIT_MACROS /DWINVER=0x0600 /D_WIN32_WINNT=0x0600 /DWIN32 /D_CRT_SECURE_NO_WARNINGS /wd4200 /W3 /EHsc /DDM_PLATFORM_WINDOWS /DLUA_BYTECODE_ENABLE /Iupload/native_raycasting/include /I/var/extender/sdk/0faa10db6bb28907d67358ad5810f3962437f3fd/defoldsdk//include /I/var/extender/sdk/0faa10db6bb28907d67358ad5810f3962437f3fd/defoldsdk//sdk/include /IC:/ProgramFilesx86/MicrosoftVisualStudio14.0/VC/INCLUDE /IC:/ProgramFilesx86/MicrosoftVisualStudio14.0/VC/ATLMFC/INCLUDE /IC:/ProgramFilesx86/WindowsKits/10/include/10.0.10240.0/ucrt /IC:/ProgramFilesx86/WindowsKits/NETFXSDK/4.6.1/include/um /IC:/ProgramFilesx86/WindowsKits/8.1/include/shared /IC:/ProgramFilesx86/WindowsKits/8.1/include/um /IC:/ProgramFilesx86/WindowsKits/8.1/include/winrt upload/native_raycasting/src/native_raycasting.cpp /c /Fobuild/native_raycasting.cpp_0.o
native_raycasting.cpp
wine lib.exe /nologo /OUT:/tmp/job1258127913073868038/build/71813fb1-d459-41a6-b572-de1e7674f114.lib build/native_raycasting.cpp_0.o
wine cl.exe /nologo /TP /O2 /Oy- /Z7 /MT /D__STDC_LIMIT_MACROS /DWINVER=0x0600 /D_WIN32_WINNT=0x0600 /DWIN32 /D_CRT_SECURE_NO_WARNINGS /wd4200 /W3 /EHsc /DDM_PLATFORM_WINDOWS /DLUA_BYTECODE_ENABLE /I/var/extender/sdk/0faa10db6bb28907d67358ad5810f3962437f3fd/defoldsdk//include /I/var/extender/sdk/0faa10db6bb28907d67358ad5810f3962437f3fd/defoldsdk//sdk/include /IC:/ProgramFilesx86/MicrosoftVisualStudio14.0/VC/INCLUDE /IC:/ProgramFilesx86/MicrosoftVisualStudio14.0/VC/ATLMFC/INCLUDE /IC:/ProgramFilesx86/WindowsKits/10/include/10.0.10240.0/ucrt /IC:/ProgramFilesx86/WindowsKits/NETFXSDK/4.6.1/include/um /IC:/ProgramFilesx86/WindowsKits/8.1/include/shared /IC:/ProgramFilesx86/WindowsKits/8.1/include/um /IC:/ProgramFilesx86/WindowsKits/8.1/include/winrt build/main.cpp /c /Fobuild/main_tmp9f6033ab-7c79-45eb-a0b8-6196e6918957.o
main.cpp
wine link.exe build/main_tmp9f6033ab-7c79-45eb-a0b8-6196e6918957.o /OUT:build/dmengine.exe /NOLOGO /MANIFEST /DELAYLOAD:LibFBGPlatform64.dll /LIBPATH:/tmp/job1258127913073868038/build /LIBPATH:/var/extender/sdk/0faa10db6bb28907d67358ad5810f3962437f3fd/defoldsdk//lib/x86_64-win32 /LIBPATH:/var/extender/sdk/0faa10db6bb28907d67358ad5810f3962437f3fd/defoldsdk//ext/lib/x86_64-win32 /LIBPATH:C:/ProgramFilesx86/MicrosoftVisualStudio14.0/VC/LIB/amd64 /LIBPATH:C:/ProgramFilesx86/MicrosoftVisualStudio14.0/VC/ATLMFC/LIB/amd64 /LIBPATH:C:/ProgramFilesx86/WindowsKits/10/lib/10.0.10240.0/ucrt/x64 /LIBPATH:C:/ProgramFilesx86/WindowsKits/NETFXSDK/4.6.1/lib/um/x64 /LIBPATH:C:/ProgramFilesx86/WindowsKits/8.1/lib/winv6.3/um/x64 OpenGL32.lib Delayimp.lib User32.lib shell32.lib Xinput9_1_0.lib openal32.lib WS2_32.lib IPHlpApi.lib DbgHelp.lib 71813fb1-d459-41a6-b572-de1e7674f114.lib 1b593900-1ca4-486b-9dc7-676989f086e5.lib libengine.lib libwebviewext.lib libadtruthext.lib libprofilerext.lib libfacebookext.lib libgameroomext.lib libiapext.lib libpushext.lib libiacext.lib librecord.lib libgameobject.lib libddf.lib libresource.lib libgamesys.lib libgraphics.lib libphysics.lib libBulletDynamics.lib libBulletCollision.lib libLinearMath.lib libBox2D.lib librender.lib libscript.lib libluajit-5.1.lib libextension.lib libhid.lib libinput.lib libparticle.lib librig.lib libdlib.lib libdmglfw.lib libgui.lib libtracking.lib libcrashext.lib libliveupdate.lib libsound.lib vpx.lib libFBGPlatform.lib
1b593900-1ca4-486b-9dc7-676989f086e5.lib(native_draw.cpp_0.o) : error LNK2005: "enum dmExtension::Result __cdecl AppFinalizeMyExtension(struct dmExtension::AppParams * __ptr64)" (?AppFinalizeMyExtension@@YA?AW4Result@dmExtension@@PEAUAppParams@2@@Z) already defined in 71813fb1-d459-41a6-b572-de1e7674f114.lib(native_raycasting.cpp_0.o)
1b593900-1ca4-486b-9dc7-676989f086e5.lib(native_draw.cpp_0.o) : error LNK2005: "enum dmExtension::Result __cdecl AppInitializeMyExtension(struct dmExtension::AppParams * __ptr64)" (?AppInitializeMyExtension@@YA?AW4Result@dmExtension@@PEAUAppParams@2@@Z) already defined in 71813fb1-d459-41a6-b572-de1e7674f114.lib(native_raycasting.cpp_0.o)
1b593900-1ca4-486b-9dc7-676989f086e5.lib(native_draw.cpp_0.o) : error LNK2005: "enum dmExtension::Result __cdecl FinalizeMyExtension(struct dmExtension::Params * __ptr64)" (?FinalizeMyExtension@@YA?AW4Result@dmExtension@@PEAUParams@2@@Z) already defined in 71813fb1-d459-41a6-b572-de1e7674f114.lib(native_raycasting.cpp_0.o)
1b593900-1ca4-486b-9dc7-676989f086e5.lib(native_draw.cpp_0.o) : error LNK2005: "enum dmExtension::Result __cdecl InitializeMyExtension(struct dmExtension::Params * __ptr64)" (?InitializeMyExtension@@YA?AW4Result@dmExtension@@PEAUParams@2@@Z) already defined in 71813fb1-d459-41a6-b572-de1e7674f114.lib(native_raycasting.cpp_0.o)