标签: compilation

我可以检查C#编译器内联方法调用吗?

我正在写一个XNA游戏,我在那里进行逐像素碰撞检查.通过移位int和按位ORing来检查这种情况的循环通常难以阅读和理解.

我想添加私有方法,例如private bool IsTransparent(int pixelColorValue)使循环更具可读性,但我不希望方法调用的开销,因为这是性能敏感的代码.

有没有办法强制编译器内联这个调用,或者我是否只是希望编译器会进行这种优化?

如果没有办法强制执行此操作,是否有办法检查方法是否内联,而不是读取反汇编?如果内联并且没有其他调用者存在,该方法是否会显示在反射中?

编辑:我不能强迫它,所以我可以检测到它吗?

c# optimization compilation inline

25
推荐指数
3
解决办法
7900
查看次数

两个文件夹:Bin和Obj ....有谁知道为什么......?

我有一个非常基本的问题.

当我们编译VS 2005 C#应用程序时,它会创建两个文件夹.一个是bin文件夹,另一个是obj文件夹.有谁知道它为什么创建一个obj文件夹?我试图找出它的文档,但我找不到它...

c# compilation visual-studio

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

如何解决致命错误LNK1000:IncrBuildImage期间的内部错误?

我正在尝试使用Visual Studio 2008在Windows 7 64位上重新编译memcached项目的解决方案文件,并收到以下错误:

1>LINK : fatal error LNK1000: Internal error during IncrBuildImage
1>  Version 9.00.21022.08
1>  ExceptionCode            = C0000005
1>  ExceptionFlags           = 00000000
1>  ExceptionAddress         = 001FFCF7 (00180000) "C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\link.exe"
1>  NumberParameters         = 00000002
1>  ExceptionInformation[ 0] = 00000000
1>  ExceptionInformation[ 1] = 011BD670
1>CONTEXT:
1>  Eax    = 400DA210  Esp    = 0014EADC
1>  Ebx    = 4000815C  Ebp    = 0014EB04
1>  Ecx    = 011BD670  Esi    = 400DA098
1>  Edx    = 0014EAF4  Edi    = …
Run Code Online (Sandbox Code Playgroud)

c compilation visual-studio-2008

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

添加函数调用如何导致其他符号在链接时变为未定义?

我希望有人能够帮助解决我认为是链接器脚本问题的问题.

在添加对新函数的调用后,我遇到了一个奇怪的问题.没有函数调用,我的目标文件链接正确,但是,添加了新的函数调用,我得到一个未定义的引用来自另一个目标文件的符号(我已经验证它实际上是使用objdump存在).

同样奇怪的是,在函数调用存在的情况下,如果我首先使用ld -r链接所有目标文件(以提供可重定位的输出)然后使用我的链接脚本,则没有未定义的引用,但似乎链接脚本被忽略,因为输出二进制文件没有正确的入口点.

我的(交叉编译器)ld版本:

> i586-elf-ld --version
GNU ld(GNU Binutils)2.20.1.20100303

我试图证明存在"缺失"符号:

> i586-elf-ld -T link.ld -o kernel32.bin kernel_loader.o main.o stdio.o common.o gdt.o gdt.bin -y putch

main.o: reference to putch  
stdio.o: definition of putch  
main.o: In function `main':  
main.c:(.text+0x1f): undefined reference to `putch'
Run Code Online (Sandbox Code Playgroud)

NB(当我生成此输出时,我使用gdt.bin的文件名作为nasm编译的汇编程序,它只是另一个.o文件,真的)

我可以在相应的目标文件中看到"缺失"的符号:

> i586-elf-objdump -ht stdio.o
stdio.o:文件格式elf32-i386

Sections:
Idx Name          Size      VMA       LMA       File off  Algn
  0 .text         000002f9  00000000  00000000  00000034  2**2
                  CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE
  1 .data         0000000c  00000000  00000000  00000330  2**2
                  CONTENTS, …
Run Code Online (Sandbox Code Playgroud)

c assembly linker compilation binutils

25
推荐指数
1
解决办法
1759
查看次数

是否可以在makefile中定义C宏?

是否可以将#define VAR(在C程序中)的等价物放入makefile中,以便可以控制程序的哪一部分应该编译?

c makefile compilation

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

vim编译错误的python版本(并没有使用所需的版本)

简单来说:

我有一个问题,用首选的python版本编译vim.
当我使用--enable-pythoninterp它时编译系统OSX python版本.
当我使用时,--enable-pythoninterp=dynamic我在尝试时在vim中出错:py import sys

以下是我正在做的更详细的内容:

% git clone https://github.com/b4winckler/macvim.git
% cd macvim
% ./configure --enable-pythoninterp \
     --with-python-config-dir=/usr/local/lib/python2.7/config <- this option has no affects on result
...
checking for python... /usr/local/bin/python
checking Python version... 2.7
checking Python is 1.4 or better... yep
checking Python's install prefix... /usr/local
checking Python's execution prefix... /usr/local
checking Python's configuration directory... /usr/local/lib/python2.7/config
...
% make
...
** BUILD SUCCEEDED **
% open src/MacVim/build/Release/MacVim.app
Run Code Online (Sandbox Code Playgroud)

在打开的MacVim I中输入:

:py import sys; …
Run Code Online (Sandbox Code Playgroud)

python macos vim compilation

25
推荐指数
5
解决办法
7914
查看次数

在应用程序中编译C#代码

我想要一些代码来编译我的TextBox中的代码(例如).我的意思是我想在运行程序后编译代码.我怎样才能做到这一点?

c# compilation c#-4.0

25
推荐指数
2
解决办法
2262
查看次数

如何在Windows 7上运行ruby程序?

有谁知道如何在Windows 7上运行/编译Ruby程序?例如,您可以在Eclipse中编译Java,但我似乎无法为Ruby找到一个.

ruby compilation windows-7

25
推荐指数
2
解决办法
7万
查看次数

编译时的Java代码转换

在将源代码传递给编译器之前,我想在编译时转换 java源代码.换句话说,我想创建一个能够转换的预处理器

"bla bla bla" 
Run Code Online (Sandbox Code Playgroud)

进入任何其他代码,如:

new MyClass("bla", 3) 
Run Code Online (Sandbox Code Playgroud)

我的实际动机是进行字符串加密,如此处所述

有些人建议编写自定义注释处理器,但据我理解注释:

  • 它们可用于生成新的类文件,但不能在传递给编译器之前转换现有代码
  • 它们似乎在包,类或方法级别工作,但不是方法体/实现.

有些人建议使用Spoon或ObjectsWeb ASM等框架,但这些框架在现有代码库中学习和部署似乎很复杂.

我茁壮成长为两种方法找到一个简单的java代码预处理示例.

有没有人看到任何聪明的方法进行代码转换,而没有用多个常春藤模块完全改变现有的大型代码库?注释似乎是最好的方法,但我不明白该怎么做.

java compilation code-translation

25
推荐指数
2
解决办法
3886
查看次数

错误:无法解析以下类的超类型.请确保您在类路径中具有所需的依赖项

我无法编译我的Android Kotlin项目.

我不知道这是什么......

Gradle日志:

错误:无法解析以下类的超类型.请确保您在类路径中具有所需的依赖项:class android.support.v7.app.AppCompatActivity,unresolved supertypes:SupportParentable

build.gradle(app)

buildscript {
    ext.android_plugin_version = "2.3.3"
    ext.kotlin_version = '1.1.2-5'

    repositories {
        maven { url 'https://maven.google.com' }
        maven { url "https://jitpack.io" }

        mavenCentral()
    }

    dependencies {
        classpath "com.android.tools.build:gradle:$android_plugin_version"
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    }
}

allprojects {
    repositories {
        maven { url 'https://maven.google.com' }
        maven { url "https://jitpack.io" }

        mavenCentral()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'

def compat_version = '26.+'
def play_services_version …
Run Code Online (Sandbox Code Playgroud)

android compilation kotlin

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