On Oct 17, 2010, at 12:05 PM, Kyle Sluder wrote:
> On Oct 16, 2010, at 8:31 PM, Ken Tozier <[email protected]> wrote:
>>
>> I want to create some inline functions that are universally available within
>> my app, but can't seem to get them working. If I define a set of inlines
>> within a specific class, they compile, but If I take the same functions and
>> move them to a dedicated "inlines" file and include that, it doesn't. The
>> compiler spits out the following:
>>
>> _UtilScaleRectSize", referenced from:
>> -[MyView initWithContainer:frame:] in MyVieww.o
>> ld: symbol(s) not found
>> collect2: ld returned 1 exit status
>>
>> Here's what works when the inlines are defined for a specific class
>>
>> static inline void UtilScaleRectSize(NSRect inRect, float inScale)
>
> Think about this for a second: "static" means file scope, so obviously you
> can't reference the symbol from another file. And non-static inlines can't
> actually be inlined because they may be called from elsewhere or have their
> addresses taken. So inline is useless to you. Just use an appropriate -O
> option that does whole-program transformation.
A static inline function should work just fine. You need to define it in a
header file, and include that header file everywhere you want to use it.
// inlines.h
static inline void UtilScaleRectSize(NSRect inRect, float inScale) {
// your code here
}
// MyView.m
#include "inlines.h"
void fn(void) {
UtilScaleRectSize(r, s);
}
Note that there is no inlines.m. If your code is structured like this,
double-check that the #include is working as you expect (and not failing
because of an include cycle or search path problem or precompiled header
surprise). Open MyView.m and run Build > Preprocess. That will show you the
file with all of the #includes resolved. You should be able to find your
definition of UtilScaleRectSize() in the file, and the place you call it after
that. If the definition is missing, or the call site is before the definition,
then it'll fail.
--
Greg Parker [email protected] Runtime Wrangler
_______________________________________________
Cocoa-dev mailing list ([email protected])
Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com
This email sent to [email protected]