Penguin
Note: You are viewing an old revision of this page. View the current version.
I (SamJansen) was having a problem after making a C++ shared library. The error produced when I tried to run my application which loaded the library with dlopen(3) was
mylibrary.so: undefined symbol: __ti13INetTCPSocket
After using c++filt(1), we know the undefined symbol is the following
INetTCPSocket type_info node

InetTCPSocket is an abstract base class used as in interface. The reason this error was generated was because one function was not declared as abstract, I had forgotten the '= 0' part of the definition.

Another symptom of this is the linker complaining "vtable undefined for class x"


std::map<>'s crashing

I (PerryLorier) was having a problem after assigning something to a std::map<> the program would crash.

My (abbreviated) code

bool operator <(const foo_t &a, const foo_t &b) {

if (a.foo < b.foo) return -1; if (a.foo > b.foo) return 1; return 0;

}

std::map<foo_t,int*> foo_map;

...

foo_mapfoo?=new int;

  • foo_mapfoo?=6;
And this code crashed. The reason was that my operator < was wrong. it voilated the contact of a < operator. I changed the "bool operator <" to "int cmp" and then defined operator <
bool operator <(const foo_t &a, const foo_t &b) { return cmp(a,b) < 0; }

I also recommend adding some assert(3)'s to verify that your operators don't voilate the rules at runtime.


CategoryProgramming

lib/BlockParser.php:505: Notice: Undefined property: _tight_top