# Can't use the same function name in 2 different extension?

**URL:** <https://forum.defold.com/t/cant-use-the-same-function-name-in-2-different-extension/76454>\
**Category:** Questions\
**Created:** [March 30, 2024, 5:37am UTC](https://forum.defold.com/t/cant-use-the-same-function-name-in-2-different-extension/76454 "2024-03-30T05:37:29Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![Chung\_Xa](https://forum-defold.b-cdn.net/user_avatar/forum.defold.com/chung_xa/32/34470_2.png) [@Chung\_Xa](https://forum.defold.com/u/Chung_Xa)\
**Post date:** [March 30, 2024, 5:37am UTC](https://forum.defold.com/t/cant-use-the-same-function-name-in-2-different-extension/76454/1 "2024-03-30T05:37:29Z")

</div>

I have 2 extensions, when building it praised error:

```lua
ld.lld: error: duplicate symbol: Initialize()
>>> defined at expo_android.cpp:15 (upload/_expo/src/expo_android.cpp:15)
>>> expo_android.cpp_34.o:(Initialize()) in archive /tmp/job8053469848410713987/build/libExpo_35.a
>>> defined at device_android.cpp:26 (upload/_device/src/device_android.cpp:26)
>>> device_android.cpp_31.o:(.text._Z10Initializev+0x0) in archive /tmp/job8053469848410713987/build/libDevice_32.a

```

Does it mean I can’t use the same function name in 2 different extension?

---

<div class="post-metadata">

**Author:** ![Chung\_Xa](https://forum-defold.b-cdn.net/user_avatar/forum.defold.com/chung_xa/32/34470_2.png) [@Chung\_Xa](https://forum.defold.com/u/Chung_Xa)\
**Post date:** [March 30, 2024, 6:58am UTC](https://forum.defold.com/t/cant-use-the-same-function-name-in-2-different-extension/76454/2 "2024-03-30T06:58:25Z")

</div>

It seems adding namespace would resolve it.  
Is there anyway to avoid conflicts without adding namespace?

---

<div class="post-metadata">

**Author:** ![Mathias\_Westerdahl](https://forum-defold.b-cdn.net/user_avatar/forum.defold.com/mathias_westerdahl/32/228_2.png) [@Mathias\_Westerdahl](https://forum.defold.com/u/Mathias_Westerdahl)\
**Post date:** [March 30, 2024, 11:23am UTC](https://forum.defold.com/t/cant-use-the-same-function-name-in-2-different-extension/76454/3 "2024-03-30T11:23:52Z")

</div>

> [@Chung\_Xa](#):
>
> `duplicate symbol: Initialize()`

That’s a common constraint for most programming languages, that you cannot have two public functions with the same name.

In C/C++, you can make the function private to your compile unit, by setting the work “static” in front of it:

```lua
static void MyFunction() {}

```

That way, it will only be visible within that compile unit (e.g. the .cpp file), and you may avoid that linker error.

---

<div class="post-metadata">

**Author:** ![Chung\_Xa](https://forum-defold.b-cdn.net/user_avatar/forum.defold.com/chung_xa/32/34470_2.png) [@Chung\_Xa](https://forum.defold.com/u/Chung_Xa)\
**Post date:** [March 30, 2024, 11:42am UTC](https://forum.defold.com/t/cant-use-the-same-function-name-in-2-different-extension/76454/4 "2024-03-30T11:42:00Z")

</div>

I thought our engine has a way to manage it so that each extension is an individual one. Thanks for the “static”, I’m quite new to C++ 😃

---

<div class="post-metadata">

**Author:** ![Mathias\_Westerdahl](https://forum-defold.b-cdn.net/user_avatar/forum.defold.com/mathias_westerdahl/32/228_2.png) [@Mathias\_Westerdahl](https://forum.defold.com/u/Mathias_Westerdahl)\
**Post date:** [March 30, 2024, 11:59am UTC](https://forum.defold.com/t/cant-use-the-same-function-name-in-2-different-extension/76454/5 "2024-03-30T11:59:24Z")

</div>

We use regular C/C++ tools to build, and that’s part of the learning curve 🙂
