extern int32_T myinput;
extern int32_T myoutput;
extern void initialize(void);
extern void run(void);
extern void terminate(void);
void run(void)
{
myoutput = myinput * 2;
}
Run Code Online (Sandbox Code Playgroud)
from ctypes import*
mydll = cdll.LoadLibrary("C:\\myDLL.dll")
mydll.myinput = 10 # Question1
mydll.initialize()
mydll.run()
print(mydll.myoutput) # Question2
mydll.terminate()
Run Code Online (Sandbox Code Playgroud)
20
Run Code Online (Sandbox Code Playgroud)
<_FuncPtr object at 0x00000000023646C8>
Run Code Online (Sandbox Code Playgroud)
简而言之,您可以修改我的脚本以使输出为20吗?
这不是 C++11
我对 Microsoft 的CMapStringToOb::GetNextAssoc的第三个参数感兴趣 ,它具有以下定义:
void GetNextAssoc(
POSITION& rNextPosition,
CString& rKey,
CObject*& rValue
) const;
Run Code Online (Sandbox Code Playgroud)
然后我得到了以下简单的测试代码:两个好的案例和一个有编译器错误的案例。
class CMyObject : public CObject //in order to use CMapStringToOb
{
public:
CMyObject(CString name_)
:name(name_)
{
}
void SayHello()
{
TRACE(_T("hello") + name);
}
CString name;
};
void main()
{
CMapStringToOb myMap;
myMap.SetAt(_T("a"), new CMyObject(_T("aaa")));
myMap.SetAt(_T("b"), new CMyObject(_T("bbb")));
myMap.SetAt(_T("c"), new CMyObject(_T("ccc")));
//good case 1
POSITION pos = myMap.GetStartPosition();
while (pos)
{
CString s;
CMyObject* pMine = NULL;
myMap.GetNextAssoc(pos, s, (CObject*&)pMine);
if(pMine)
{ …Run Code Online (Sandbox Code Playgroud) 我正在编写代码以使用Win32 API来检测java的版本.例如
基本上,我正在关注MSDN 使用重定向输入和输出创建子进程 https://msdn.microsoft.com/en-us/library/ms682499%28VS.85%29.aspx
string GetJavaVersion(string sJavaExePath) {
}
Run Code Online (Sandbox Code Playgroud)
这是伪客户端代码:
ASSERT(GetJavaVersion("C:\Program Files (x86)\Java\jdk1.7.0_17\bin\java.exe") == "1.7.0_25");
Run Code Online (Sandbox Code Playgroud)
我可以得到结果:
java version "1.7.0_25"
Java(TM) SE Runtime Environment (build 1.7.0_25-b17)
Java HotSpot(TM) Client VM (build 23.25-b01, mixed mode, sharing)
Run Code Online (Sandbox Code Playgroud)
但是,结果是从stdErr发回的,而我应该从stdOut返回.
从stdErr接收字符串是否有意义?