相关疑难解决方法(0)

如何在C中纯粹编写iOS应用程序

我在这里读到在Objective-C之前学习C?

通常我会用纯C代码替换一些Obj-C代码(毕竟你可以根据需要混合它们,Obj-C方法的内容可以完全是纯C代码)

这是真的?

是否有可能纯粹使用C编程语言构建iPhone应用程序?

c cocoa-touch objective-c objective-c-runtime ios

352
推荐指数
3
解决办法
8万
查看次数

加载共享库时自动执行的功能

在Windows中加载共享库时,LoadLibrary()调用库中的原因DllMain,以便为每个新进程和线程库附加,以及为每个进程和线程库执行detaaches.

Mac OS X,Linux和其他POSIX兼容的操作系统是否有类似的机制?

posix d shared-libraries dlopen

42
推荐指数
3
解决办法
4万
查看次数

VC中的__attribute __((构造函数))等效?

我想知道是否可以在VC中使用C构造函数,因为可以在GCC中使用它们.使用attribute关键字的gcc方式非常简单,不幸的是VC似乎甚至不知道这个关键字,因为我不是Win32程序员,我想知道是否有某种等效的关键字用于这类事情.需要注意的是 - 这是一个C程序,而不是C++或C#甚至,(因为'在这些语言中很容易做到这一点)

有人知道吗?

提前致谢.

c visual-studio

26
推荐指数
3
解决办法
1万
查看次数

LINUX:静态链接模块加载的顺序

如果我有两个静态链接的模块.一个模块的module_init函数依赖于已经运行的另一个模块的module_init函数.有没有办法强制一个模块在另一个模块之前加载?

另外,第一个模块的init函数是否可以在调用第二个模块之前完成?

最后,如果上面的答案为NO,那么同步两个模块init调用的推荐方法是什么,以确保我不会遇到问题?

module linux-kernel

12
推荐指数
2
解决办法
5199
查看次数

初始化Objective-C类别中的静态变量

我试图创建一个静态变量来存储图像字典.不幸的是,我可以找到初始化它的最好方法是检入使用该变量的每个函数.由于我在一个类别中创建了这个变量,我不能只在初始化器中初始化它.有没有更简洁的初始化navigationBarImages的方法?

static NSMutableDictionary *navigationBarImages = NULL;

@implementation UINavigationBar(CustomImage)
//Overrider to draw a custom image
- (void)drawRect:(CGRect)rect
{
    if(navigationBarImages==NULL){
        navigationBarImages=[[NSMutableDictionary alloc] init];
    }
    NSString *imageName=[navigationBarImages objectForKey:self];
    if (imageName==nil) {
        imageName=@"header_bg.png";
    }
    UIImage *image = [UIImage imageNamed: imageName];
    [image drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];
}

//Allow the setting of an image for the navigation bar
- (void)setImage:(UIImage*)image
{
    if(navigationBarImages==NULL){
        navigationBarImages=[[NSMutableDictionary alloc] init];
    }
    [navigationBarImages setObject:image forKey:self];
}
@end
Run Code Online (Sandbox Code Playgroud)

initialization objective-c static-variables categories

9
推荐指数
2
解决办法
1万
查看次数

在运行时更改枚举值?

有没有办法在运行时在目标c中为枚举值赋值?我有几个枚举,并希望每个枚举都有一定的价值.可以从xml文件中读取值.有没有办法做到这一点?

enums objective-c objective-c-runtime ios

6
推荐指数
2
解决办法
1万
查看次数

dlopen'ing 时是否运行静态初始化(和/或其他)代码?

当您dlopen()是共享对象时,是否有一种机制可以让该 DLL 中的代码在不被显式调用的情况下执行?具体来说,调用者dlopen()可能不知道的全局变量/静态变量的 C++ 静态初始化代码?我很确定答案应该是“是”,但我不记得是什么机制导致这种情况发生,以及如何利用它来运行任意代码。

c++ shared-objects dynamic-loading dlopen static-initialization

5
推荐指数
1
解决办法
710
查看次数

如何在C和JAVA中的main()之前执行特定的函数?

我想在C和JAVA语言的main函数之前执行一个函数.我知道一种方法,就是#pragma在C语言中使用指令.在这两种语言中还有其他方法吗?

c java pragma

4
推荐指数
2
解决办法
7128
查看次数

如何使用 LD_PRELOAD 向应用程序注入后台线程?

我知道 LD_PRELOAD 可用于拦截对共享库中函数的调用(如果应用程序不是静态链接的)。但是,我不知道如何使用它向应用程序添加附加功能或后台线程。

例如,我认为伯克利实验室的检查点/重启使用这种方法将后台线程添加到稍后可能会被检查点的应用程序。

那么,现在的问题是,如何在不事先知道从该应用程序调用共享库的哪些函数的情况下,使用 LD_PRELOAD 将线程注入到已编译的应用程序中?

linux gcc dynamic-linking ld-preload

4
推荐指数
1
解决办法
516
查看次数

加载/卸载时由共享库执行的代码

是否可以在加载(或卸载)库时立即执行的共享库(Windows 上的 .dll 和 linux 上的 .so)中创建函数?

就像 main() 函数是可执行文件的入口点一样,我可以定义一个函数在加载或卸载 DLL 时执行吗?

例如:

void _atstart()
{
    // Initialize some stuff needed by the library
}

void _atexit()
{
    // Release some allocated resources
}
Run Code Online (Sandbox Code Playgroud)

我想我在某处看到过这样的例子,但我再也找不到了,并且在互联网上找不到任何关于此的信息。

如果它有任何用处,我正在用 MinGW 编译代码。

c++ dll shared-libraries

3
推荐指数
1
解决办法
2872
查看次数

动态加载的类的静态成员变量

dlopen如果我要使用类似C++ 的方式加载一些符号,而该翻译单元中的其他类具有static成员变量,那么这些静态成员变量的行为到底是什么。它们是否被初始化,因为库并没有真正加载您查找的符号(我认为后者是不正确的,因为如果您查找的符号需要它们也需要加载)?

c++ linux shared-libraries dynamic-loading

3
推荐指数
1
解决办法
2686
查看次数

如何可移植地加载动态库并运行其初始化代码?

我习惯使用dl_open()库函数动态加载共享对象/DLL:

void *dlopen(const char *filename, int flags);
Run Code Online (Sandbox Code Playgroud)

...并且这还运行 ELF 格式中标有 ; 的所有函数.init。或者在C/C++代码中,用 标记__attribute__((constructor))

__attribute__((constructor)) 到底是如何工作的?

然而 - 我只能确定这可以使用 GCC 和 GNU/Linux(也许在任何glibc可用的地方)上工作。

我的问题是:我怎样才能以更便携的方式做同样的事情?我对向其他编译器和其他平台的可移植性感兴趣。

注意:我标记了这个 C++,因为这就是我正在使用的,但显然 C-ish 解决方案是可以接受的 - 因为我上面描述的是 C-ish 解决方案。

c++ dll portability shared-libraries

3
推荐指数
1
解决办法
2603
查看次数