<p>I'm trying to port an old library (that doesn't use namespaces as far as I can tell) to modern compilers. One of my targets can't tell the difference between System::TObject and ::TObject (without a namespace). System::TObject is native to the compiler.</p>

<p>I've tried a using directive, i.e. using ::TObject;</p>

<p>But that doesn't do it.</p>

<p>The obvious solution is to wrap all the original library in a namespace and then calling it by name- that should avoid the ambiguity. But is that the wisest solution? Is there any other solution? Adding a namespace would require changing a bunch of files and I don't know if it would have unwanted repercussions later.</p>

If you have the source to the library, maybe include a header file at the top of each source where that header file has only:
```
```
#define TObject TMadeUpNameObject
```
```