小编Sun*_*ise的帖子

在C++代码中使用C#dll

我需要 在我的C++代码中集成这个C#dll.我想用dll调用一些用C#编写的函数,用C++编写其余的代码.什么是最简单,最快捷的方法?该程序将仅在Windows上执行.

c# c++ dll visual-c++

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

rand()和random()函数有什么区别?

有一次,我的老师教我使用randomize()random()函数在C++ Builder中生成伪随机数.现在我更喜欢在VS 2012中工作,但当我尝试使用这些功能时,它会说"找不到标识符",即使我添加了#include <stdlib.h>.谷歌搜索后的一段时间,我发现,也有rand()srand()功能.它们之间有什么区别,哪个更好用?

c++ random

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

如何正确使用GetModuleFileName?

以下代码:

#include <iostream>
#include <Windows.h>

using namespace std;

int main ()
{   LPWSTR buffer; //or wchar_t * buffer;
    GetModuleFileName(NULL, buffer, MAX_PATH) ;
    cout<<buffer;
    cin.get();
    cin.get();

}
Run Code Online (Sandbox Code Playgroud)

应该显示程序执行的完整路径.但是在VS 2012中我得到了错误:

使用未初始化的局部变量'缓冲区'

代码有什么问题?

c++ getmodulefilename

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

在Visual Studio中从asm调用C标准库函数

我在Visual Studio中创建的asm项目调用C函数时遇到问题(Win10 x64,Visual Studio 2015).项目由一个asm文件组成:

.586
.model flat, stdcall
option casemap:none
includelib msvcrt.lib

ExitProcess PROTO return:DWORD
extern printf:near

.data
text BYTE "Text", 0

.code
main PROC
    push offset text
    call printf
    add esp,4
    invoke ExitProcess,0
main ENDP
end main
Run Code Online (Sandbox Code Playgroud)

当我构建项目时,链接器输出错误:

错误LNK2019未解析的函数_main @ 0中引用的外部符号_printf

链接器输出参数:

/OUT:"C:\Users\apple\Documents\SP_Lab7\Debug\SP_Lab7_Demo.exe"/ MANIFEST:NO/NXCOMPAT /PDB:"C:\Users\apple\Documents\SP_Lab7\Debug\SP_Lab7_Demo.pdb"/ DYNAMICBASE "kernel32.lib""user32.lib""gdi32.lib""winspool.lib""comdlg32.lib""advapi32.lib""shell32.lib""ole32.lib""oleaut32.lib""uuid.lib" "odbc32.lib""odbccp32.lib"/ MACHINE:X86/SAFESEH:NO/INCREMENTAL:NO /PGD:"C:\Users\apple\Documents\SP_Lab7\Debug\SP_Lab7_Demo.pgd"/ SUBSYSTEM:WINDOWS/MANIFESTUAC: "level ='asInvoker'uiAccess ='false'"/ ManifestFile:"Debug\SP_Lab7_Demo.exe.intermediate.manifest"/ ERRORREPORT:PROMPT/NOLOGO/TLBID:1

如果我发表评论call print,那么一切都正常执行(甚至是Windows API函数).有没有办法从asm文件调用C函数而不创建包含的cpp文件<cstdio>?有可能吗?

x86 assembly masm linker-errors visual-studio

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

为什么Objective-C上的指针在ivar上不好?

我正在阅读"Effective Objective-C 2.0:52改进iOS和OS X程序的具体方法".在"第6项"中,作者说在公共ivar上使用指针是一个坏主意,因为编译后的代码将具有硬编码指针偏移量,并且当新的ivar将被添加到类中时,之前使用的指向某些ivars的指针现在可以指向其他变量.

@interface Foo
{
    @public
    NSString * string;
    NSArray * arr;
}
@end

@implementation
...
@end

int main()
{
  @autoreleasepool
  {
   Foo *f=[Foo new];
   f->string; //Is it bad idea?
  }

 return 0;
}
Run Code Online (Sandbox Code Playgroud)

但是,ivars和属性是不是动态的(在编译时不知道偏移量)?正如Cocoa With Love所说:

"所有ivars在现代运行时都是动态的:由于所有ivars遵循此过程,这意味着现代Objective-C运行时中的所有ivars都是动态的,因为它们的绝对偏移在编译时永远不会被知道."

如果这是真的,那么为什么在伊塔尔上使用指针不好呢?请提供尽可能多的低级细节.

properties objective-c ivar

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

为什么cin不识别输入键,如cin.get呢?

例如,如果在代码中编写这些语句:

char a[10];
char b[10];
cin>>a;
cin>>b; 
Run Code Online (Sandbox Code Playgroud)

cin>>b;没有看到Enter键入后按下的键,例如Hello

但是当cin>>b;写入cin.get(b, 10);然后从先前的语句中cin.get(b, 10);读取Enter键时.

c++ cin

0
推荐指数
1
解决办法
468
查看次数