AFAIK modules can't be dynamically linked (or linked at all before 2.6), however it isn't that hard to do manually:
Code:
char *start1 = /* start point */, *start2 = start1, *copy = 0;
unsigned int size = 0;
while (*start1++) size++;
if (size) copy = new char[size];
while (size--) *copy++ = *start2++;
BTW; since the kernel isn't built with the same options as a module, it can be statically linked, which is why it can use 'strcpy'.
ta0kira