我想确定本机程序集是否从托管代码应用程序(C#)编译为x64或x86 .
我认为它必须在PE头中的某处,因为OS加载器需要知道这些信息,但我找不到它.当然我更喜欢在托管代码中执行它,但如果有必要,我可以使用本机C++.
我正在按照rails教程中的说明操作,并在尝试使用scaffold命令时遇到困难.
运行时:
rails generate scaffold User name:string email:string
Run Code Online (Sandbox Code Playgroud)
我收到错误:
C:/RailsInstaller/Ruby1.9.2/lib/ruby/gems/1.9.1/gems/activerecord-3.1.0/lib/active_record/connection_adapters/abstract/connection_specification.rb:71:in `rescue in establish_connection': Please install the sqlite3 adapter: `gem install activerecord-sqlite3-adapter` (can't activate sqlite3 (~> 1.3.4), already activated sqlite3-1.3.3-x86-mingw32. Make sure all dependencies are added to Gemfile.) (RuntimeError)
Run Code Online (Sandbox Code Playgroud)
运行:
gem install activerecord-sqlite3-adapter
Run Code Online (Sandbox Code Playgroud)
我收到了错误:
ERROR: Could not find a valid gem 'activerecord-sqlite3-adapter' (>= 0) in any repository
ERROR: Possible alternatives: activerecord-jdbcsqlite3-adapter, activerecord-sqlserver-adapter, activerecord-nulldb-adapter, activerecord-spatialite-adapter, activerecord-simpledb-adapter
Run Code Online (Sandbox Code Playgroud)
我的Gemfile看起来像这样:
source 'http://rubygems.org'
gem 'rails', '3.1.0'
gem 'sqlite3', '1.3.3'
...
Run Code Online (Sandbox Code Playgroud)
我在Windows 7 x64操作系统上运行.
有任何想法吗?
我正在使用Wix3.我需要在用户卸载产品时打开网页.
有什么想法可以做到吗?
谢谢.
我想从主线程开始一个新线程.我不能使用join,因为我不想等待线程退出而不是继续执行.
基本上我需要的是像pthread_start(...),但是找不到它.
编辑:
因为建议create_thread的所有答案应该启动线程问题是在下面的简单代码中它不起作用.以下程序的输出是"主线程".看起来子线程从未执行过.知道我错了吗?
在Fedora 14 GCC 4.5.1版上编译并运行
void *thread_proc(void* x)
{
printf ("sub thread.\n");
pthread_exit(NULL);
}
int main()
{
pthread_t t1;
int res = pthread_create(&t1, NULL, thread_proc, NULL);
if (res)
{
printf ("error %d\n", res);
}
printf("main thread\n");
return 0;
}
Run Code Online (Sandbox Code Playgroud) 在win 2000或更高版本(任何语言)的操作系统上,我可以假设此路径将始终存在吗?例如,我知道在某些语言的win xp中,"Program Files"目录具有不同的名称.那么System32文件夹是真的吗?
谢谢.辖.
假设主线程正在生成一个新线程t1,我在t1上运行的代码如何找到主线程的线程id(使用c#)?
编辑:
我不控制新线程的创建.所以我不能将任何参数传递给线程.
谢谢.
我有一个用C++编写的DLL,我想压缩一些导出方法的名称.这些方法是全局的,不是任何类的成员.有没有办法实现这个目标?
顺便说一句:我正在使用VS2008.
每次操作系统启动新进程时,我都想收到通知。
请注意,我需要在本机代码中做到这一点(我知道它可以使用 System.Management 成员在托管代码中完成)。
如果有办法在进程开始运行之前获得它,则额外加分:)(即在其初始化期间)
谢谢。
我试图在x64 Ubuntu 11.04 Natty Narwhal上链接x86共享库,但是我得到以下消息:
/usr/bin/ld: skipping incompatible ./bin/libshared.so when searching for -lshared
/usr/bin/ld: cannot find -lshared
Run Code Online (Sandbox Code Playgroud)
一些细节:
共享库名称是libshared.so
共享库是在x86 OS上构建的.
我已经安装了lib32stdc ++ 6.
makefile看起来像这样:
test: main.o
g++ -mi386linux -L./bin -lshared main.o -o test
main.o: main.cpp
g++ -m32 -c main.cpp -o main.o
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
编辑:将-mi386linux标志更改为-m32后,我收到此错误:
/usr/bin/ld: cannot find -lshared
/usr/bin/ld: skipping incompatible /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/libstdc++.so when searching for -lstdc++
/usr/bin/ld: skipping incompatible /usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/libstdc++.a when searching for -lstdc++
/usr/bin/ld: cannot find -lstdc++
collect2: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)
运行locate我找到libstdc ++.所以在以下地方:
/usr/lib/x86_64-linux-gnu/libstdc++.so.6
/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.14
/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5/libstdc++.so
/usr/lib32/libstdc++.so.6 …Run Code Online (Sandbox Code Playgroud) 为什么在main函数启动之前应该调用派生的CWinApp的构造函数?
为什么不能这样:
int WinMain()
{
CMainFrame* pMainFrame = new CMainFrame;
// etc ...
}
Run Code Online (Sandbox Code Playgroud)
我正在寻找迫使这种行为的技术原因.
编辑:
更清楚 - 如果我在没有MFC的情况下使用win32 API,主窗口是在WinMain中创建的,那有什么区别?