我正试图从eclipse获得一个签名的APK.我有一个可调试的apk版本,工作正常.现在,当我尝试使用Eclipse ADT进行编译和签名时,我会收到许多警告,其中大部分是警告can't find superclass or interface some.package.Class
.所以,我提到这个,这个和其他许多不幸的是我无法到达的任何地方!
我也得到Note: there were 314 duplicate class definitions.
警告
我的progaurd-project.txt早先没有动过.所以,我-libraryjars /libs/lib-name
为/EcliseProject/libs/
文件夹中的每个罐子添加了.所以我想出了以下内容:
-libraryjars /libs/android-support-v4.jar
-libraryjars /libs/apache-mime4j-core-0.7.2.jar
-libraryjars /libs/gcm.jar
-libraryjars /libs/httpclient-4.3.3.jar
-libraryjars /libs/httpcore-4.3.2.jar
-libraryjars /libs/httpmime-4.3.3.jar
-libraryjars /libs/library.jar
-libraryjars /libs/nineoldandroids-2.4.0.jar
到最后,我得到了1800多个警告,其中大多数都没有找到上面提到的超类或接口.所以,我得到了那些有这些类的罐子,并将它们放在/ lib /文件夹中,并添加了-libraryjars
包括rt.jar
等的条目.然后我得到了更多的警告,其中一些人说library class org.xmlpull.v1.XmlPullParser depends on program class java.lang.String
.
我尝试添加-dontskipnonpubliclibraryclasses
,添加一些-dontwarn
等等.到目前为止没有任何工作.
在某些时候,我保持足够,-dontwarn
以便制作apk,但它只是提起登录屏幕(第一个活动),一旦点击按钮就卡在那里.
我想我错过了一些非常基本的东西.这些天我一直在测试调试模式apk正常工作.为什么这个麻烦?请帮忙!!
我试图在我的机器上部署Windows服务,但是当我试图启动它时,我得到了以下错误.
"Windows无法在本地计算机上启动'myService'.错误1053:服务没有及时响应启动或控制请求."
经过一些研究后,我发现我正在使用Debug选项来编写我的项目,当我将其更改为'Release'模式时,一切都很好并正常工作.我无法理解这种行为,所以我在网上搜索并发现了这个调试vs-release-in-net,但即便如此也无法解释为什么我的窗口服务很难启动,如果我使用调试模式的dll
如果有人能解释它,将有助于我了解这实际上是如何工作的感谢.
我有一个问题,我的代码在将调试与发布进行比较时会返回不同的结果.我检查了两种模式都使用/ fp:exact,所以这不应该是问题.我对此的主要问题是完整的图像分析(它是一个图像理解项目)完全是确定性的,其中绝对没有任何随机性.
另一个问题是我的发布版本实际上总是返回相同的结果(图像为23.014),而debug返回22到23之间的一些随机值,这不应该是.我已经检查过它是否与线程相关,但算法中唯一的多线程部分会为调试和发布返回完全相同的结果.
还有什么可能发生在这里?
Update1:我现在发现的代码负责此行为:
float PatternMatcher::GetSADFloatRel(float* sample, float* compared, int sampleX, int compX, int offX)
{
if (sampleX != compX)
{
return 50000.0f;
}
float result = 0;
float* pTemp1 = sample;
float* pTemp2 = compared + offX;
float w1 = 0.0f;
float w2 = 0.0f;
float w3 = 0.0f;
for(int j = 0; j < sampleX; j ++)
{
w1 += pTemp1[j] * pTemp1[j];
w2 += pTemp1[j] * pTemp2[j];
w3 += pTemp2[j] * pTemp2[j];
} …
Run Code Online (Sandbox Code Playgroud) 我从这里使用了NSLog的宏版本,http://objdev.com/2014/06/debug-logging
像这样,
#ifdef DEBUG
#define DLog(...) NSLog(@"%s(%p) %@", __PRETTY_FUNCTION__, self, [NSString stringWithFormat:__VA_ARGS__])
#endif
Run Code Online (Sandbox Code Playgroud)
它工作正常,直到我将应用程序运行模式从更改Debug
为Release
.
现在我收到以下错误:
函数'DLog'的隐式声明在C99中无效.
我该如何解决这个问题?
我读了很多问题, 错误:'隐式声明函数'nslog'在C99'无效,ARC警告:函数'DLog'的隐式声明在C99中无效且函数的隐式声明 - C99,但没有一个答案适用于我.
PS这个问题根本与CocoaLumberjack无关.
最近我发现我的发布可执行文件(用msvc ++ express 2008制作)变得非常大.当我用十六进制查看器检查可执行文件时,我看到只有前300k字节包含有用数据,其余字节只有零 - 6兆字节的零字节.
debug built exe的大小为1MB,但发行版为6.5MB.
为什么MSVC++ express会做那些无用的事情?我该如何解决?
所以我刚刚遵循了为发布模式启用调试符号的建议,并在启用调试符号后,禁用优化并发现如果符号符合发布模式,断点确实有效,我发现自己在想...
有什么建议?
我有一个有趣的问题.
是否可以识别程序集是否在Visual Studio中运行?
请查看以下代码.
if(FoundThatYouAreDebuggingInVisualStudio)
{
Print "Hello"
}
else
{
Print "Hi"
}
Run Code Online (Sandbox Code Playgroud)
上面的代码存在于.NET程序集(比如XYZ)中,它是在发布模式下构建的.用户正在调试他/她的应用程序(例如ABC),它引用了XYZ程序集.
我需要确定用户是否在Visual Studio中进行调试,或者他只是在运行ABC应用程序.
有任何想法吗?
-D
c# visual-studio-2010 release-mode visual-studio visual-studio-debugging
我正在测试我的计算机架构上的行为Interlocked.Increment
和lock
行为,因为我阅读了本文中的以下几行。
正如用 Interlocked.Increment 重写的那样,该方法应该执行得更快,至少在某些架构上是这样。
使用以下代码,我确信在我的项目中检查锁是值得的。
var watch = new Stopwatch();
var locker = new object();
int counter = 0;
watch.Start();
for (int i = 0; i < 100000000; i++)
{
lock (locker)
{
counter++;
}
}
watch.Stop();
Console.WriteLine(watch.Elapsed.TotalSeconds);
watch.Reset();
counter = 0;
watch.Start();
for (int i = 0; i < 100000000; i++)
{
Interlocked.Increment(ref counter);
}
watch.Stop();
Console.WriteLine(watch.Elapsed.TotalSeconds);
Run Code Online (Sandbox Code Playgroud)
我越来越有近似值稳定的结果2.4S用于锁定和1.2秒的互锁。然而,我惊讶地发现在发布模式下运行此代码仅将 Interlocked 的值提高到大约0.7 秒,并且锁定时间保持不变。这是为什么?在释放模式下锁定不是互锁时如何优化互锁?
我需要在调试模式下将某些代码行"激活",并在发布模式下忽略.有没有办法做这样的事情:
#include <iostream>
using namespace std;
#ifdef _TEST_
#define _cerr cerr
#else
#define _cerr // cerr
#endif
int main() {
_cerr << "TEST message" << endl;
}
Run Code Online (Sandbox Code Playgroud)
因此,当_TEST_
未定义时,会对某些行进行注释或从代码中删除.我知道评论是在其余的之前处理的,所以这段代码是错误的.但是,如何在不明确使用#ifdefs的情况下获得我需要的行为?
我一直在尝试使用XMVECTOR作为边界框的类成员,因为我做了很多计算,但是每帧只使用一次XMFLOAT3,所以边界框有一个方法让我在XMFLOAT3中居中,否则它保留在XMVECTOR中;该类用__declspec(align(16))进行处理,并在调试模式下工作.但是在Release模式下,它崩溃了我设置的东西:
Box& Box::operator=(const Box& box)
{
_center = box._center;
_extents = box._extents;
return *this;
}
Run Code Online (Sandbox Code Playgroud)
每当我这样做:
Box A;
Box B;
A = B;
Run Code Online (Sandbox Code Playgroud)
它崩溃,给我0xC0000005:访问冲突读取位置0x00000000.当我将其创建为指针时,它也会崩溃:
Box* A = new Box();
Run Code Online (Sandbox Code Playgroud)
这是构造函数:
Box::Box()
{
center = XMVectorZero();
extents = XMVectorSplatOne();
}
Run Code Online (Sandbox Code Playgroud)
再次,这在调试模式下工作正常,但在Release中它崩溃了.什么样的Release模式可以改变,会产生无效的代码?除了将盒子对齐到16个字节之外,我还需要做其他事情吗?
release-mode ×10
c++ ×5
c# ×3
debug-mode ×2
debugging ×2
adt ×1
android ×1
compilation ×1
directxmath ×1
dll ×1
eclipse ×1
interlocked ×1
ios ×1
locking ×1
nslog ×1
openmp ×1
proguard ×1
release ×1
simd ×1
size ×1
visual-c++ ×1